! function (t, e) {
    for (var r in e) t[r] = e[r]
}(exports, function (t) {
    var e = {};

    function r(i) {
        if (e[i]) return e[i].exports;
        var n = e[i] = {
            i: i,
            l: !1,
            exports: {}
        };
        return t[i].call(n.exports, n, n.exports, r), n.l = !0, n.exports
    }
    return r.m = t, r.c = e, r.d = function (t, e, i) {
        r.o(t, e) || Object.defineProperty(t, e, {
            enumerable: !0,
            get: i
        })
    }, r.r = function (t) {
        "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {
            value: "Module"
        }), Object.defineProperty(t, "__esModule", {
            value: !0
        })
    }, r.t = function (t, e) {
        if (1 & e && (t = r(t)), 8 & e) return t;
        if (4 & e && "object" == typeof t && t && t.__esModule) return t;
        var i = Object.create(null);
        if (r.r(i), Object.defineProperty(i, "default", {
                enumerable: !0,
                value: t
            }), 2 & e && "string" != typeof t)
            for (var n in t) r.d(i, n, function (e) {
                return t[e]
            }.bind(null, n));
        return i
    }, r.n = function (t) {
        var e = t && t.__esModule ? function () {
            return t.default
        } : function () {
            return t
        };
        return r.d(e, "a", e), e
    }, r.o = function (t, e) {
        return Object.prototype.hasOwnProperty.call(t, e)
    }, r.p = "", r(r.s = 7)
}([function (t, e, r) {
    "use strict";
    var i;

    function n(t, e, r) {
        return e in t ? Object.defineProperty(t, e, {
            value: r,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : t[e] = r, t
    }
    var o = r(4).DOMParser,
        s = {};
    e.a = (n(i = {
        AudioContext: function () {},
        addEventListener: function () {},
        removeEventListener: function () {},
        URL: {},
        navigator: {},
        location: {
            href: ""
        },
        ontouchstart: !0,
        DOMParser: o
    }, "addEventListener", (function (t, e) {
        s[t] || (s[t] = []), s[t].push(e)
    })), n(i, "removeEventListener", (function (t, e) {
        var r = s[t];
        if (r && r.length > 0)
            for (var i = r.length; i--; i > 0)
                if (r[i] === e) {
                    r.splice(i, 1);
                    break
                }
    })), n(i, "dispatchEvent", (function (t) {
        var e = s[t.type];
        if (e)
            for (var r = 0; r < e.length; r++) e[r](t)
    })), i)
}, function (t, e) {
    var r;
    r = function () {
        return this
    }();
    try {
        r = r || new Function("return this")()
    } catch (t) {
        "object" == typeof window && (r = window)
    }
    t.exports = r
}, function (t, e, r) {
    "use strict";

    function i(t, e, r) {
        return e in t ? Object.defineProperty(t, e, {
            value: r,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : t[e] = r, t
    }
    r.d(e, "a", (function () {
        return n
    }));
    var n = function t(e) {
        ! function (t, e) {
            if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
        }(this, t), i(this, "target", ""), i(this, "currentTarget", ""), i(this, "touches", []), i(this, "targetTouches", []), i(this, "changedTouches", []), i(this, "preventDefault", (function () {})), i(this, "stopPropagation", (function () {})), this.type = e
    }
}, function (t, e, r) {
    "use strict";

    function i(t, e) {
        for (var r = 0; r < e.length; r++) {
            var i = e[r];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
        }
    }
    r.d(e, "a", (function () {
        return _
    }));
    var n = new WeakMap,
        o = function () {
            function t() {
                ! function (t, e) {
                    if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                }(this, t), n.set(this, {})
            }
            var e, r, o;
            return e = t, (r = [{
                key: "addEventListener",
                value: function (t, e) {
                    var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                        i = n.get(this);
                    i || (i = {}, n.set(this, i)), i[t] || (i[t] = []), i[t].push(e), r.capture, r.once, r.passive
                }
            }, {
                key: "removeEventListener",
                value: function (t, e) {
                    var r = n.get(this);
                    if (r) {
                        var i = r[t];
                        if (i && i.length > 0)
                            for (var o = i.length; o--; o > 0)
                                if (i[o] === e) {
                                    i.splice(o, 1);
                                    break
                                }
                    }
                }
            }, {
                key: "dispatchEvent",
                value: function () {
                    var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                        e = n.get(this)[t.type];
                    if (e)
                        for (var r = 0; r < e.length; r++) e[r](t)
                }
            }]) && i(e.prototype, r), o && i(e, o), t
        }();

    function s(t) {
        return (s = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (t) {
            return typeof t
        } : function (t) {
            return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
        })(t)
    }

    function a(t, e) {
        for (var r = 0; r < e.length; r++) {
            var i = e[r];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
        }
    }

    function h(t, e) {
        return (h = Object.setPrototypeOf || function (t, e) {
            return t.__proto__ = e, t
        })(t, e)
    }

    function u(t, e) {
        return !e || "object" !== s(e) && "function" != typeof e ? l(t) : e
    }

    function l(t) {
        if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
        return t
    }

    function c() {
        if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
        if (Reflect.construct.sham) return !1;
        if ("function" == typeof Proxy) return !0;
        try {
            return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {}))), !0
        } catch (t) {
            return !1
        }
    }

    function d(t) {
        return (d = Object.setPrototypeOf ? Object.getPrototypeOf : function (t) {
            return t.__proto__ || Object.getPrototypeOf(t)
        })(t)
    }
    var p = new WeakMap,
        f = new WeakMap,
        m = new WeakMap;

    function g(t) {
        var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
        e.target = e.target || this, "function" == typeof this["on".concat(t)] && this["on".concat(t)].call(this, e)
    }

    function v(t) {
        var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
        this.readyState = t, e.readyState = t, g.call(this, "readystatechange", e)
    }

    function y(t) {
        return !/^(http|https|ftp|wxfile):\/\/.*/i.test(t)
    }
    var _ = function (t) {
        ! function (t, e) {
            if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
            t.prototype = Object.create(e && e.prototype, {
                constructor: {
                    value: t,
                    writable: !0,
                    configurable: !0
                }
            }), e && h(t, e)
        }(s, t);
        var e, r, i, n, o = (e = s, function () {
            var t, r = d(e);
            if (c()) {
                var i = d(this).constructor;
                t = Reflect.construct(r, arguments, i)
            } else t = r.apply(this, arguments);
            return u(this, t)
        });

        function s() {
            var t;
            return function (t, e) {
                if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
            }(this, s), (t = o.call(this)).onabort = null, t.onerror = null, t.onload = null, t.onloadstart = null, t.onprogress = null, t.ontimeout = null, t.onloadend = null, t.onreadystatechange = null, t.readyState = 0, t.response = null, t.responseText = null, t.responseType = "text", t.dataType = "string", t.responseXML = null, t.status = 0, t.statusText = "", t.upload = {}, t.withCredentials = !1, p.set(l(t), {
                "content-type": "application/x-www-form-urlencoded"
            }), f.set(l(t), {}), t
        }
        return r = s, (i = [{
            key: "abort",
            value: function () {
                var t = m.get(this);
                t && t.abort()
            }
        }, {
            key: "getAllResponseHeaders",
            value: function () {
                var t = f.get(this);
                return Object.keys(t).map((function (e) {
                    return "".concat(e, ": ").concat(t[e])
                })).join("\n")
            }
        }, {
            key: "getResponseHeader",
            value: function (t) {
                return f.get(this)[t]
            }
        }, {
            key: "open",
            value: function (t, e) {
                this._method = t, this._url = e, v.call(this, s.OPENED)
            }
        }, {
            key: "overrideMimeType",
            value: function () {}
        }, {
            key: "send",
            value: function () {
                var t = this,
                    e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "";
                if (this.readyState !== s.OPENED) throw new Error("Failed to execute 'send' on 'XMLHttpRequest': The object's state must be OPENED.");
                var r, i = this._url,
                    n = p.get(this),
                    o = this.responseType,
                    a = this.dataType,
                    h = y(i);
                "arraybuffer" === o || (r = "utf8"), delete this.response, this.response = null;
                var u = function (e) {
                        var r = e.data,
                            i = e.statusCode,
                            n = e.header;
                        if (i = void 0 === i ? 200 : i, "string" != typeof r && !(r instanceof ArrayBuffer)) try {
                            r = JSON.stringify(r)
                        } catch (t) {}
                        t.status = i, n && f.set(t, n), g.call(t, "loadstart"), v.call(t, s.HEADERS_RECEIVED), v.call(t, s.LOADING), t.response = r, r instanceof ArrayBuffer ? Object.defineProperty(t, "responseText", {
                            enumerable: !0,
                            configurable: !0,
                            get: function () {
                                throw "InvalidStateError : responseType is " + this.responseType
                            }
                        }) : t.responseText = r, v.call(t, s.DONE), g.call(t, "load"), g.call(t, "loadend")
                    },
                    l = function (e) {
                        var r = e.errMsg; - 1 !== r.indexOf("abort") ? g.call(t, "abort") : g.call(t, "error", {
                            message: r
                        }), g.call(t, "loadend"), h && console.warn(r)
                    };
                if (h) {
                    var c = wx.getFileSystemManager(),
                        d = {
                            filePath: i,
                            success: u,
                            fail: l
                        };
                    return r && (d.encoding = r), void c.readFile(d)
                }
                wx.request({
                    data: e,
                    url: i,
                    method: this._method,
                    header: n,
                    dataType: a,
                    responseType: o,
                    success: u,
                    fail: l
                })
            }
        }, {
            key: "setRequestHeader",
            value: function (t, e) {
                var r = p.get(this);
                r[t] = e, p.set(this, r)
            }
        }, {
            key: "addEventListener",
            value: function (t, e) {
                var r = this;
                "function" == typeof e && (this["on" + t] = function () {
                    var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                    t.target = t.target || r, e.call(r, t)
                })
            }
        }, {
            key: "removeEventListener",
            value: function (t, e) {
                this["on" + t] === e && (this["on" + t] = null)
            }
        }]) && a(r.prototype, i), n && a(r, n), s
    }(o);
    _.UNSEND = 0, _.OPENED = 1, _.HEADERS_RECEIVED = 2, _.LOADING = 3, _.DONE = 4
}, function (t, e, r) {
    function i(t) {
        this.options = t || {
            locator: {}
        }
    }

    function n() {
        this.cdata = !1
    }

    function o(t, e) {
        e.lineNumber = t.lineNumber, e.columnNumber = t.columnNumber
    }

    function s(t) {
        if (t) return "\n@" + (t.systemId || "") + "#[line:" + t.lineNumber + ",col:" + t.columnNumber + "]"
    }

    function a(t, e, r) {
        return "string" == typeof t ? t.substr(e, r) : t.length >= e + r || e ? new java.lang.String(t, e, r) + "" : t
    }

    function h(t, e) {
        t.currentElement ? t.currentElement.appendChild(e) : t.doc.appendChild(e)
    }
    i.prototype.parseFromString = function (t, e) {
        var r = this.options,
            i = new l,
            o = r.domBuilder || new n,
            a = r.errorHandler,
            h = r.locator,
            c = r.xmlns || {},
            d = /\/x?html?$/.test(e),
            p = d ? u.entityMap : {
                lt: "<",
                gt: ">",
                amp: "&",
                quot: '"',
                apos: "'"
            };
        return h && o.setDocumentLocator(h), i.errorHandler = function (t, e, r) {
            if (!t) {
                if (e instanceof n) return e;
                t = e
            }
            var i = {},
                o = t instanceof Function;

            function a(e) {
                var n = t[e];
                !n && o && (n = 2 == t.length ? function (r) {
                    t(e, r)
                } : t), i[e] = n && function (t) {
                    n("[xmldom " + e + "]\t" + t + s(r))
                } || function () {}
            }
            return r = r || {}, a("warning"), a("error"), a("fatalError"), i
        }(a, o, h), i.domBuilder = r.domBuilder || o, d && (c[""] = "http://www.w3.org/1999/xhtml"), c.xml = c.xml || "http://www.w3.org/XML/1998/namespace", t ? i.parse(t, c, p) : i.errorHandler.error("invalid doc source"), o.doc
    }, n.prototype = {
        startDocument: function () {
            this.doc = (new c).createDocument(null, null, null), this.locator && (this.doc.documentURI = this.locator.systemId)
        },
        startElement: function (t, e, r, i) {
            var n = this.doc,
                s = n.createElementNS(t, r || e),
                a = i.length;
            h(this, s), this.currentElement = s, this.locator && o(this.locator, s);
            for (var u = 0; u < a; u++) {
                t = i.getURI(u);
                var l = i.getValue(u),
                    c = (r = i.getQName(u), n.createAttributeNS(t, r));
                this.locator && o(i.getLocator(u), c), c.value = c.nodeValue = l, s.setAttributeNode(c)
            }
        },
        endElement: function (t, e, r) {
            var i = this.currentElement;
            i.tagName;
            this.currentElement = i.parentNode
        },
        startPrefixMapping: function (t, e) {},
        endPrefixMapping: function (t) {},
        processingInstruction: function (t, e) {
            var r = this.doc.createProcessingInstruction(t, e);
            this.locator && o(this.locator, r), h(this, r)
        },
        ignorableWhitespace: function (t, e, r) {},
        characters: function (t, e, r) {
            if (t = a.apply(this, arguments)) {
                if (this.cdata) var i = this.doc.createCDATASection(t);
                else i = this.doc.createTextNode(t);
                this.currentElement ? this.currentElement.appendChild(i) : /^\s*$/.test(t) && this.doc.appendChild(i), this.locator && o(this.locator, i)
            }
        },
        skippedEntity: function (t) {},
        endDocument: function () {
            this.doc.normalize()
        },
        setDocumentLocator: function (t) {
            (this.locator = t) && (t.lineNumber = 0)
        },
        comment: function (t, e, r) {
            t = a.apply(this, arguments);
            var i = this.doc.createComment(t);
            this.locator && o(this.locator, i), h(this, i)
        },
        startCDATA: function () {
            this.cdata = !0
        },
        endCDATA: function () {
            this.cdata = !1
        },
        startDTD: function (t, e, r) {
            var i = this.doc.implementation;
            if (i && i.createDocumentType) {
                var n = i.createDocumentType(t, e, r);
                this.locator && o(this.locator, n), h(this, n)
            }
        },
        warning: function (t) {
            console.warn("[xmldom warning]\t" + t, s(this.locator))
        },
        error: function (t) {
            console.error("[xmldom error]\t" + t, s(this.locator))
        },
        fatalError: function (t) {
            throw console.error("[xmldom fatalError]\t" + t, s(this.locator)), t
        }
    }, "endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g, (function (t) {
        n.prototype[t] = function () {
            return null
        }
    }));
    var u = r(13),
        l = r(14).XMLReader,
        c = e.DOMImplementation = r(5).DOMImplementation;
    e.XMLSerializer = r(5).XMLSerializer, e.DOMParser = i
}, function (t, e) {
    function r(t) {
        return (r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (t) {
            return typeof t
        } : function (t) {
            return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
        })(t)
    }

    function i(t, e) {
        for (var r in t) e[r] = t[r]
    }

    function n(t, e) {
        var r = t.prototype;
        if (!(r instanceof e)) {
            var n = function () {};
            n.prototype = e.prototype, i(r, n = new n), t.prototype = r = n
        }
        r.constructor != t && ("function" != typeof t && console.error("unknow Class:" + t), r.constructor = t)
    }
    var o = {},
        s = o.ELEMENT_NODE = 1,
        a = o.ATTRIBUTE_NODE = 2,
        h = o.TEXT_NODE = 3,
        u = o.CDATA_SECTION_NODE = 4,
        l = o.ENTITY_REFERENCE_NODE = 5,
        c = o.ENTITY_NODE = 6,
        d = o.PROCESSING_INSTRUCTION_NODE = 7,
        p = o.COMMENT_NODE = 8,
        f = o.DOCUMENT_NODE = 9,
        m = o.DOCUMENT_TYPE_NODE = 10,
        g = o.DOCUMENT_FRAGMENT_NODE = 11,
        v = o.NOTATION_NODE = 12,
        y = {},
        _ = {},
        x = (y.INDEX_SIZE_ERR = (_[1] = "Index size error", 1), y.DOMSTRING_SIZE_ERR = (_[2] = "DOMString size error", 2), y.HIERARCHY_REQUEST_ERR = (_[3] = "Hierarchy request error", 3)),
        b = (y.WRONG_DOCUMENT_ERR = (_[4] = "Wrong document", 4), y.INVALID_CHARACTER_ERR = (_[5] = "Invalid character", 5), y.NO_DATA_ALLOWED_ERR = (_[6] = "No data allowed", 6), y.NO_MODIFICATION_ALLOWED_ERR = (_[7] = "No modification allowed", 7), y.NOT_FOUND_ERR = (_[8] = "Not found", 8)),
        E = (y.NOT_SUPPORTED_ERR = (_[9] = "Not supported", 9), y.INUSE_ATTRIBUTE_ERR = (_[10] = "Attribute in use", 10));
    y.INVALID_STATE_ERR = (_[11] = "Invalid state", 11), y.SYNTAX_ERR = (_[12] = "Syntax error", 12), y.INVALID_MODIFICATION_ERR = (_[13] = "Invalid modification", 13), y.NAMESPACE_ERR = (_[14] = "Invalid namespace", 14), y.INVALID_ACCESS_ERR = (_[15] = "Invalid access", 15);

    function T(t, e) {
        if (e instanceof Error) var r = e;
        else r = this, Error.call(this, _[t]), this.message = _[t], Error.captureStackTrace && Error.captureStackTrace(this, T);
        return r.code = t, e && (this.message = this.message + ": " + e), r
    }

    function w() {}

    function S(t, e) {
        this._node = t, this._refresh = e, I(this)
    }

    function I(t) {
        var e = t._node._inc || t._node.ownerDocument._inc;
        if (t._inc != e) {
            var r = t._refresh(t._node);
            rt(t, "length", r.length), i(r, t), t._inc = e
        }
    }

    function P() {}

    function A(t, e) {
        for (var r = t.length; r--;)
            if (t[r] === e) return r
    }

    function O(t, e, r, i) {
        if (i ? e[A(e, i)] = r : e[e.length++] = r, t) {
            r.ownerElement = t;
            var n = t.ownerDocument;
            n && (i && F(n, t, i), function (t, e, r) {
                t && t._inc++, "http://www.w3.org/2000/xmlns/" == r.namespaceURI && (e._nsMap[r.prefix ? r.localName : ""] = r.value)
            }(n, t, r))
        }
    }

    function D(t, e, r) {
        var i = A(e, r);
        if (!(i >= 0)) throw T(b, new Error(t.tagName + "@" + r));
        for (var n = e.length - 1; i < n;) e[i] = e[++i];
        if (e.length = n, t) {
            var o = t.ownerDocument;
            o && (F(o, t, r), r.ownerElement = null)
        }
    }

    function C(t) {
        if (this._features = {}, t)
            for (var e in t) this._features = t[e]
    }

    function M() {}

    function R(t) {
        return ("<" == t ? "&lt;" : ">" == t && "&gt;") || "&" == t && "&amp;" || '"' == t && "&quot;" || "&#" + t.charCodeAt() + ";"
    }

    function N(t, e) {
        if (e(t)) return !0;
        if (t = t.firstChild)
            do {
                if (N(t, e)) return !0
            } while (t = t.nextSibling)
    }

    function L() {}

    function F(t, e, r, i) {
        t && t._inc++, "http://www.w3.org/2000/xmlns/" == r.namespaceURI && delete e._nsMap[r.prefix ? r.localName : ""]
    }

    function B(t, e, r) {
        if (t && t._inc) {
            t._inc++;
            var i = e.childNodes;
            if (r) i[i.length++] = r;
            else {
                for (var n = e.firstChild, o = 0; n;) i[o++] = n, n = n.nextSibling;
                i.length = o
            }
        }
    }

    function U(t, e) {
        var r = e.previousSibling,
            i = e.nextSibling;
        return r ? r.nextSibling = i : t.firstChild = i, i ? i.previousSibling = r : t.lastChild = r, B(t.ownerDocument, t), e
    }

    function k(t, e, r) {
        var i = e.parentNode;
        if (i && i.removeChild(e), e.nodeType === g) {
            var n = e.firstChild;
            if (null == n) return e;
            var o = e.lastChild
        } else n = o = e;
        var s = r ? r.previousSibling : t.lastChild;
        n.previousSibling = s, o.nextSibling = r, s ? s.nextSibling = n : t.firstChild = n, null == r ? t.lastChild = o : r.previousSibling = o;
        do {
            n.parentNode = t
        } while (n !== o && (n = n.nextSibling));
        return B(t.ownerDocument || t, t), e.nodeType == g && (e.firstChild = e.lastChild = null), e
    }

    function X() {
        this._nsMap = {}
    }

    function j() {}

    function H() {}

    function G() {}

    function Y() {}

    function z() {}

    function V() {}

    function W() {}

    function q() {}

    function K() {}

    function Z() {}

    function $() {}

    function J() {}

    function Q(t, e) {
        var r = [],
            i = 9 == this.nodeType && this.documentElement || this,
            n = i.prefix,
            o = i.namespaceURI;
        if (o && null == n && null == (n = i.lookupPrefix(o))) var s = [{
            namespace: o,
            prefix: null
        }];
        return et(this, r, t, e, s), r.join("")
    }

    function tt(t, e, r) {
        var i = t.prefix || "",
            n = t.namespaceURI;
        if (!i && !n) return !1;
        if ("xml" === i && "http://www.w3.org/XML/1998/namespace" === n || "http://www.w3.org/2000/xmlns/" == n) return !1;
        for (var o = r.length; o--;) {
            var s = r[o];
            if (s.prefix == i) return s.namespace != n
        }
        return !0
    }

    function et(t, e, r, i, n) {
        if (i) {
            if (!(t = i(t))) return;
            if ("string" == typeof t) return void e.push(t)
        }
        switch (t.nodeType) {
            case s:
                n || (n = []);
                n.length;
                var o = t.attributes,
                    c = o.length,
                    v = t.firstChild,
                    y = t.tagName;
                r = "http://www.w3.org/1999/xhtml" === t.namespaceURI || r, e.push("<", y);
                for (var _ = 0; _ < c; _++) {
                    "xmlns" == (x = o.item(_)).prefix ? n.push({
                        prefix: x.localName,
                        namespace: x.value
                    }) : "xmlns" == x.nodeName && n.push({
                        prefix: "",
                        namespace: x.value
                    })
                }
                for (_ = 0; _ < c; _++) {
                    var x;
                    if (tt(x = o.item(_), 0, n)) {
                        var b = x.prefix || "",
                            E = x.namespaceURI,
                            T = b ? " xmlns:" + b : " xmlns";
                        e.push(T, '="', E, '"'), n.push({
                            prefix: b,
                            namespace: E
                        })
                    }
                    et(x, e, r, i, n)
                }
                if (tt(t, 0, n)) {
                    b = t.prefix || "", E = t.namespaceURI, T = b ? " xmlns:" + b : " xmlns";
                    e.push(T, '="', E, '"'), n.push({
                        prefix: b,
                        namespace: E
                    })
                }
                if (v || r && !/^(?:meta|link|img|br|hr|input)$/i.test(y)) {
                    if (e.push(">"), r && /^script$/i.test(y))
                        for (; v;) v.data ? e.push(v.data) : et(v, e, r, i, n), v = v.nextSibling;
                    else
                        for (; v;) et(v, e, r, i, n), v = v.nextSibling;
                    e.push("</", y, ">")
                } else e.push("/>");
                return;
            case f:
            case g:
                for (v = t.firstChild; v;) et(v, e, r, i, n), v = v.nextSibling;
                return;
            case a:
                return e.push(" ", t.name, '="', t.value.replace(/[<&"]/g, R), '"');
            case h:
                return e.push(t.data.replace(/[<&]/g, R));
            case u:
                return e.push("<![CDATA[", t.data, "]]>");
            case p:
                return e.push("\x3c!--", t.data, "--\x3e");
            case m:
                var w = t.publicId,
                    S = t.systemId;
                if (e.push("<!DOCTYPE ", t.name), w) e.push(' PUBLIC "', w), S && "." != S && e.push('" "', S), e.push('">');
                else if (S && "." != S) e.push(' SYSTEM "', S, '">');
                else {
                    var I = t.internalSubset;
                    I && e.push(" [", I, "]"), e.push(">")
                }
                return;
            case d:
                return e.push("<?", t.target, " ", t.data, "?>");
            case l:
                return e.push("&", t.nodeName, ";");
            default:
                e.push("??", t.nodeName)
        }
    }

    function rt(t, e, r) {
        t[e] = r
    }
    T.prototype = Error.prototype, i(y, T), w.prototype = {
        length: 0,
        item: function (t) {
            return this[t] || null
        },
        toString: function (t, e) {
            for (var r = [], i = 0; i < this.length; i++) et(this[i], r, t, e);
            return r.join("")
        }
    }, S.prototype.item = function (t) {
        return I(this), this[t]
    }, n(S, w), P.prototype = {
        length: 0,
        item: w.prototype.item,
        getNamedItem: function (t) {
            for (var e = this.length; e--;) {
                var r = this[e];
                if (r.nodeName == t) return r
            }
        },
        setNamedItem: function (t) {
            var e = t.ownerElement;
            if (e && e != this._ownerElement) throw new T(E);
            var r = this.getNamedItem(t.nodeName);
            return O(this._ownerElement, this, t, r), r
        },
        setNamedItemNS: function (t) {
            var e, r = t.ownerElement;
            if (r && r != this._ownerElement) throw new T(E);
            return e = this.getNamedItemNS(t.namespaceURI, t.localName), O(this._ownerElement, this, t, e), e
        },
        removeNamedItem: function (t) {
            var e = this.getNamedItem(t);
            return D(this._ownerElement, this, e), e
        },
        removeNamedItemNS: function (t, e) {
            var r = this.getNamedItemNS(t, e);
            return D(this._ownerElement, this, r), r
        },
        getNamedItemNS: function (t, e) {
            for (var r = this.length; r--;) {
                var i = this[r];
                if (i.localName == e && i.namespaceURI == t) return i
            }
            return null
        }
    }, C.prototype = {
        hasFeature: function (t, e) {
            var r = this._features[t.toLowerCase()];
            return !(!r || e && !(e in r))
        },
        createDocument: function (t, e, r) {
            var i = new L;
            if (i.implementation = this, i.childNodes = new w, i.doctype = r, r && i.appendChild(r), e) {
                var n = i.createElementNS(t, e);
                i.appendChild(n)
            }
            return i
        },
        createDocumentType: function (t, e, r) {
            var i = new V;
            return i.name = t, i.nodeName = t, i.publicId = e, i.systemId = r, i
        }
    }, M.prototype = {
        firstChild: null,
        lastChild: null,
        previousSibling: null,
        nextSibling: null,
        attributes: null,
        parentNode: null,
        childNodes: null,
        ownerDocument: null,
        nodeValue: null,
        namespaceURI: null,
        prefix: null,
        localName: null,
        insertBefore: function (t, e) {
            return k(this, t, e)
        },
        replaceChild: function (t, e) {
            this.insertBefore(t, e), e && this.removeChild(e)
        },
        removeChild: function (t) {
            return U(this, t)
        },
        appendChild: function (t) {
            return this.insertBefore(t, null)
        },
        hasChildNodes: function () {
            return null != this.firstChild
        },
        cloneNode: function (t) {
            return function t(e, i, n) {
                var o = new i.constructor;
                for (var h in i) {
                    var u = i[h];
                    "object" != r(u) && u != o[h] && (o[h] = u)
                }
                i.childNodes && (o.childNodes = new w);
                switch (o.ownerDocument = e, o.nodeType) {
                    case s:
                        var l = i.attributes,
                            c = o.attributes = new P,
                            d = l.length;
                        c._ownerElement = o;
                        for (var p = 0; p < d; p++) o.setAttributeNode(t(e, l.item(p), !0));
                        break;
                    case a:
                        n = !0
                }
                if (n)
                    for (var f = i.firstChild; f;) o.appendChild(t(e, f, n)), f = f.nextSibling;
                return o
            }(this.ownerDocument || this, this, t)
        },
        normalize: function () {
            for (var t = this.firstChild; t;) {
                var e = t.nextSibling;
                e && e.nodeType == h && t.nodeType == h ? (this.removeChild(e), t.appendData(e.data)) : (t.normalize(), t = e)
            }
        },
        isSupported: function (t, e) {
            return this.ownerDocument.implementation.hasFeature(t, e)
        },
        hasAttributes: function () {
            return this.attributes.length > 0
        },
        lookupPrefix: function (t) {
            for (var e = this; e;) {
                var r = e._nsMap;
                if (r)
                    for (var i in r)
                        if (r[i] == t) return i;
                e = e.nodeType == a ? e.ownerDocument : e.parentNode
            }
            return null
        },
        lookupNamespaceURI: function (t) {
            for (var e = this; e;) {
                var r = e._nsMap;
                if (r && t in r) return r[t];
                e = e.nodeType == a ? e.ownerDocument : e.parentNode
            }
            return null
        },
        isDefaultNamespace: function (t) {
            return null == this.lookupPrefix(t)
        }
    }, i(o, M), i(o, M.prototype), L.prototype = {
        nodeName: "#document",
        nodeType: f,
        doctype: null,
        documentElement: null,
        _inc: 1,
        insertBefore: function (t, e) {
            if (t.nodeType == g) {
                for (var r = t.firstChild; r;) {
                    var i = r.nextSibling;
                    this.insertBefore(r, e), r = i
                }
                return t
            }
            return null == this.documentElement && t.nodeType == s && (this.documentElement = t), k(this, t, e), t.ownerDocument = this, t
        },
        removeChild: function (t) {
            return this.documentElement == t && (this.documentElement = null), U(this, t)
        },
        importNode: function (t, e) {
            return function t(e, r, i) {
                var n;
                switch (r.nodeType) {
                    case s:
                        (n = r.cloneNode(!1)).ownerDocument = e;
                    case g:
                        break;
                    case a:
                        i = !0
                }
                n || (n = r.cloneNode(!1));
                if (n.ownerDocument = e, n.parentNode = null, i)
                    for (var o = r.firstChild; o;) n.appendChild(t(e, o, i)), o = o.nextSibling;
                return n
            }(this, t, e)
        },
        getElementById: function (t) {
            var e = null;
            return N(this.documentElement, (function (r) {
                if (r.nodeType == s && r.getAttribute("id") == t) return e = r, !0
            })), e
        },
        getElementsByClassName: function (t) {
            var e = new RegExp("(^|\\s)".concat(t, "(\\s|$)"));
            return new S(this, (function (t) {
                var r = [];
                return N(t.documentElement, (function (i) {
                    i !== t && i.nodeType == s && e.test(i.getAttribute("class")) && r.push(i)
                })), r
            }))
        },
        createElement: function (t) {
            var e = new X;
            return e.ownerDocument = this, e.nodeName = t, e.tagName = t, e.childNodes = new w, (e.attributes = new P)._ownerElement = e, e
        },
        createDocumentFragment: function () {
            var t = new Z;
            return t.ownerDocument = this, t.childNodes = new w, t
        },
        createTextNode: function (t) {
            var e = new G;
            return e.ownerDocument = this, e.appendData(t), e
        },
        createComment: function (t) {
            var e = new Y;
            return e.ownerDocument = this, e.appendData(t), e
        },
        createCDATASection: function (t) {
            var e = new z;
            return e.ownerDocument = this, e.appendData(t), e
        },
        createProcessingInstruction: function (t, e) {
            var r = new $;
            return r.ownerDocument = this, r.tagName = r.target = t, r.nodeValue = r.data = e, r
        },
        createAttribute: function (t) {
            var e = new j;
            return e.ownerDocument = this, e.name = t, e.nodeName = t, e.localName = t, e.specified = !0, e
        },
        createEntityReference: function (t) {
            var e = new K;
            return e.ownerDocument = this, e.nodeName = t, e
        },
        createElementNS: function (t, e) {
            var r = new X,
                i = e.split(":"),
                n = r.attributes = new P;
            return r.childNodes = new w, r.ownerDocument = this, r.nodeName = e, r.tagName = e, r.namespaceURI = t, 2 == i.length ? (r.prefix = i[0], r.localName = i[1]) : r.localName = e, n._ownerElement = r, r
        },
        createAttributeNS: function (t, e) {
            var r = new j,
                i = e.split(":");
            return r.ownerDocument = this, r.nodeName = e, r.name = e, r.namespaceURI = t, r.specified = !0, 2 == i.length ? (r.prefix = i[0], r.localName = i[1]) : r.localName = e, r
        }
    }, n(L, M), X.prototype = {
        nodeType: s,
        hasAttribute: function (t) {
            return null != this.getAttributeNode(t)
        },
        getAttribute: function (t) {
            var e = this.getAttributeNode(t);
            return e && e.value || ""
        },
        getAttributeNode: function (t) {
            return this.attributes.getNamedItem(t)
        },
        setAttribute: function (t, e) {
            var r = this.ownerDocument.createAttribute(t);
            r.value = r.nodeValue = "" + e, this.setAttributeNode(r)
        },
        removeAttribute: function (t) {
            var e = this.getAttributeNode(t);
            e && this.removeAttributeNode(e)
        },
        appendChild: function (t) {
            return t.nodeType === g ? this.insertBefore(t, null) : function (t, e) {
                var r = e.parentNode;
                if (r) {
                    var i = t.lastChild;
                    r.removeChild(e);
                    i = t.lastChild
                }
                return i = t.lastChild, e.parentNode = t, e.previousSibling = i, e.nextSibling = null, i ? i.nextSibling = e : t.firstChild = e, t.lastChild = e, B(t.ownerDocument, t, e), e
            }(this, t)
        },
        setAttributeNode: function (t) {
            return this.attributes.setNamedItem(t)
        },
        setAttributeNodeNS: function (t) {
            return this.attributes.setNamedItemNS(t)
        },
        removeAttributeNode: function (t) {
            return this.attributes.removeNamedItem(t.nodeName)
        },
        removeAttributeNS: function (t, e) {
            var r = this.getAttributeNodeNS(t, e);
            r && this.removeAttributeNode(r)
        },
        hasAttributeNS: function (t, e) {
            return null != this.getAttributeNodeNS(t, e)
        },
        getAttributeNS: function (t, e) {
            var r = this.getAttributeNodeNS(t, e);
            return r && r.value || ""
        },
        setAttributeNS: function (t, e, r) {
            var i = this.ownerDocument.createAttributeNS(t, e);
            i.value = i.nodeValue = "" + r, this.setAttributeNode(i)
        },
        getAttributeNodeNS: function (t, e) {
            return this.attributes.getNamedItemNS(t, e)
        },
        getElementsByTagName: function (t) {
            return new S(this, (function (e) {
                var r = [];
                return N(e, (function (i) {
                    i === e || i.nodeType != s || "*" !== t && i.tagName != t || r.push(i)
                })), r
            }))
        },
        getElementsByTagNameNS: function (t, e) {
            return new S(this, (function (r) {
                var i = [];
                return N(r, (function (n) {
                    n === r || n.nodeType !== s || "*" !== t && n.namespaceURI !== t || "*" !== e && n.localName != e || i.push(n)
                })), i
            }))
        }
    }, L.prototype.getElementsByTagName = X.prototype.getElementsByTagName, L.prototype.getElementsByTagNameNS = X.prototype.getElementsByTagNameNS, n(X, M), j.prototype.nodeType = a, n(j, M), H.prototype = {
        data: "",
        substringData: function (t, e) {
            return this.data.substring(t, t + e)
        },
        appendData: function (t) {
            t = this.data + t, this.nodeValue = this.data = t, this.length = t.length
        },
        insertData: function (t, e) {
            this.replaceData(t, 0, e)
        },
        appendChild: function (t) {
            throw new Error(_[x])
        },
        deleteData: function (t, e) {
            this.replaceData(t, e, "")
        },
        replaceData: function (t, e, r) {
            r = this.data.substring(0, t) + r + this.data.substring(t + e), this.nodeValue = this.data = r, this.length = r.length
        }
    }, n(H, M), G.prototype = {
        nodeName: "#text",
        nodeType: h,
        splitText: function (t) {
            var e = this.data,
                r = e.substring(t);
            e = e.substring(0, t), this.data = this.nodeValue = e, this.length = e.length;
            var i = this.ownerDocument.createTextNode(r);
            return this.parentNode && this.parentNode.insertBefore(i, this.nextSibling), i
        }
    }, n(G, H), Y.prototype = {
        nodeName: "#comment",
        nodeType: p
    }, n(Y, H), z.prototype = {
        nodeName: "#cdata-section",
        nodeType: u
    }, n(z, H), V.prototype.nodeType = m, n(V, M), W.prototype.nodeType = v, n(W, M), q.prototype.nodeType = c, n(q, M), K.prototype.nodeType = l, n(K, M), Z.prototype.nodeName = "#document-fragment", Z.prototype.nodeType = g, n(Z, M), $.prototype.nodeType = d, n($, M), J.prototype.serializeToString = function (t, e, r) {
        return Q.call(t, e, r)
    }, M.prototype.toString = Q;
    try {
        if (Object.defineProperty) {
            Object.defineProperty(S.prototype, "length", {
                get: function () {
                    return I(this), this.$$length
                }
            }), Object.defineProperty(M.prototype, "textContent", {
                get: function () {
                    return function t(e) {
                        switch (e.nodeType) {
                            case s:
                            case g:
                                var r = [];
                                for (e = e.firstChild; e;) 7 !== e.nodeType && 8 !== e.nodeType && r.push(t(e)), e = e.nextSibling;
                                return r.join("");
                            default:
                                return e.nodeValue
                        }
                    }(this)
                },
                set: function (t) {
                    switch (this.nodeType) {
                        case s:
                        case g:
                            for (; this.firstChild;) this.removeChild(this.firstChild);
                            (t || String(t)) && this.appendChild(this.ownerDocument.createTextNode(t));
                            break;
                        default:
                            this.data = t, this.value = t, this.nodeValue = t
                    }
                }
            }), rt = function (t, e, r) {
                t["$$" + e] = r
            }
        }
    } catch (t) {}
    e.Node = M, e.DOMImplementation = C, e.XMLSerializer = J
}, function (t, e, r) {
    "use strict";
    const i = r(11),
        n = r(12);
    t.exports = {
        atob: i,
        btoa: n
    }
}, function (t, e, r) {
    "use strict";
    r.r(e),
        function (t, i) {
            r.d(e, "createPIXI", (function () {
                return u
            }));
            r(6);
            var n = r(3),
                o = r(0),
                s = r(2);

            function a(t) {
                return (a = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (t) {
                    return typeof t
                } : function (t) {
                    return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
                })(t)
            }
            var h = r(4).DOMParser;

            function u(e, r, u, l) {
                var c = r / e.width;
                e.style = {
                    width: e.width + "px",
                    height: e.height + "px"
                }, e.parentElement = !0, e.getBoundingClientRect = function () {
                    return {
                        left: 0,
                        top: 0,
                        width: e.width,
                        height: e.height
                    }
                }, e.addEventListener = function (t, e) {
                    o.a.addEventListener(t, e)
                }, e.removeEventListener = function (t, e) {
                    o.a.removeEventListener(t, e)
                }, "function" != typeof e.getContext2 && (e.getContext2 = e.getContext, e.getContext = function (t) {
                    var r = null;
                    return (r = e.getContext2("webgl")).fillRect = function () {}, r.fillStyle = "", r.drawImage = function () {}, r.getImageData = function () {}, r
                }), u && (u.style = {
                    width: u.width + "px",
                    height: u.height + "px"
                }, u.addEventListener = function () {}, u.removeEventListener = function () {}), l && (l.style = {
                    width: l.width + "px",
                    height: l.height + "px"
                }, l.addEventListener = function () {}, l.removeEventListener = function () {});
                var d = e.requestAnimationFrame,
                    p = function () {},
                    f = function () {},
                    m = {
                        userAgent: ""
                    },
                    g = function () {
                        var t = e.createImage();
                        return t.crossOrigin = "", t
                    },
                    v = {
                        createElementNS: function (t, r) {
                            var i;
                            switch (r) {
                                case "canvas":
                                    return (i = wx.createOffscreenCanvas()).style = {
                                        width: i.width + "px",
                                        height: i.height + "px"
                                    }, i.addEventListener = function () {}, i.removeEventListener = function () {}, i.getContext2 = i.getContext, i.getContext = function (t) {
                                        var e = i.getContext2("webgl");
                                        return e.fillRect = function () {}, e.fillStyle = "", e.drawImage = function () {}, e.getImageData = function () {}, e
                                    }, i;
                                case "canvas2d":
                                    return u || ((i = wx.createOffscreenCanvas()).style = {
                                        width: i.width + "px",
                                        height: i.height + "px"
                                    }, i.addEventListener = function () {}, i.removeEventListener = function () {}, i.getContext2 = i.getContext, i.getContext = function (t) {
                                        var e = i.getContext2("webgl");
                                        return e.fillRect = function () {}, e.fillStyle = "", e.drawImage = function () {}, e.getImageData = function () {}, e
                                    }, i);
                                case "canvas2dText":
                                    return l || ((i = wx.createOffscreenCanvas()).style = {
                                        width: i.width + "px",
                                        height: i.height + "px"
                                    }, i.addEventListener = function () {}, i.removeEventListener = function () {}, i.getContext2 = i.getContext, i.getContext = function (t) {
                                        var e = i.getContext2("webgl");
                                        return e.fillRect = function () {}, e.fillStyle = "", e.drawImage = function () {}, e.getImageData = function () {}, e
                                    }, i);
                                case "img":
                                case "image":
                                    var n = e.createImage();
                                    return n.crossOrigin = "", n;
                                case "div":
                                    return {
                                        style: {}
                                    }
                            }
                        },
                        createElement: function (t) {
                            var r;
                            switch (t) {
                                case "canvas":
                                    return (r = wx.createOffscreenCanvas()).style = {
                                        width: r.width + "px",
                                        height: r.height + "px"
                                    }, r.addEventListener = function () {}, r.removeEventListener = function () {}, r.getContext2 = r.getContext, r.getContext = function (t) {
                                        var e = r.getContext2("webgl");
                                        return e.fillRect = function () {}, e.fillStyle = "", e.drawImage = function () {}, e.getImageData = function () {}, e
                                    }, r;
                                case "canvas2d":
                                    return u || ((r = wx.createOffscreenCanvas()).style = {
                                        width: r.width + "px",
                                        height: r.height + "px"
                                    }, r.addEventListener = function () {}, r.removeEventListener = function () {}, r.getContext2 = r.getContext, r.getContext = function (t) {
                                        var e = r.getContext2("webgl");
                                        return e.fillRect = function () {}, e.fillStyle = "", e.drawImage = function () {}, e.getImageData = function () {}, e
                                    }, r);
                                case "canvas2dText":
                                    return l || ((r = wx.createOffscreenCanvas()).style = {
                                        width: r.width + "px",
                                        height: r.height + "px"
                                    }, r.addEventListener = function () {}, r.removeEventListener = function () {}, r.getContext2 = r.getContext, r.getContext = function (t) {
                                        var e = r.getContext2("webgl");
                                        return e.fillRect = function () {}, e.fillStyle = "", e.drawImage = function () {}, e.getImageData = function () {}, e
                                    }, r);
                                case "img":
                                case "image":
                                    var i = e.createImage();
                                    return i.crossOrigin = "", i;
                                case "a":
                                    return {
                                        href: ""
                                    };
                                case "div":
                                    return {
                                        style: {}
                                    }
                            }
                        },
                        addEventListener: function () {},
                        removeEventListener: function () {}
                    };
                o.a.document = v, o.a.WebGLRenderingContext = e.getContext2("webgl");
                var y = o.a.WebGLRenderingContext,
                    _ = function (e) {
                        var r = "undefined" != typeof globalThis ? globalThis : void 0 !== o.a ? o.a : void 0 !== t ? t : "undefined" != typeof self ? self : {};

                        function u(t, e) {
                            return t(e = {
                                exports: {}
                            }, e.exports), e.exports
                        }
                        var l = u((function (t, e) {
                                ! function (t) {
                                    var r = t.Promise,
                                        n = r && "resolve" in r && "reject" in r && "all" in r && "race" in r && function () {
                                            var t;
                                            return new r((function (e) {
                                                t = e
                                            })), "function" == typeof t
                                        }();
                                    e ? (e.Promise = n ? r : b, e.Polyfill = b) : n || (t.Promise = b);
                                    var o = function () {};

                                    function s(t) {
                                        return "[object Array]" === Object.prototype.toString.call(t)
                                    }
                                    var h, u = void 0 !== i ? i : setTimeout,
                                        l = [];

                                    function c() {
                                        for (var t = 0; t < l.length; t++) l[t][0](l[t][1]);
                                        l = [], h = !1
                                    }

                                    function d(t, e) {
                                        l.push([t, e]), h || (h = !0, u(c, 0))
                                    }

                                    function p(t) {
                                        var e = t.owner,
                                            r = e.state_,
                                            i = e.data_,
                                            n = t[r],
                                            o = t.then;
                                        if ("function" == typeof n) {
                                            r = "fulfilled";
                                            try {
                                                i = n(i)
                                            } catch (t) {
                                                v(o, t)
                                            }
                                        }
                                        f(o, i) || ("fulfilled" === r && m(o, i), "rejected" === r && v(o, i))
                                    }

                                    function f(t, e) {
                                        var r;
                                        try {
                                            if (t === e) throw new TypeError("A promises callback cannot return that same promise.");
                                            if (e && ("function" == typeof e || "object" === a(e))) {
                                                var i = e.then;
                                                if ("function" == typeof i) return i.call(e, (function (i) {
                                                    r || (r = !0, e !== i ? m(t, i) : g(t, i))
                                                }), (function (e) {
                                                    r || (r = !0, v(t, e))
                                                })), !0
                                            }
                                        } catch (e) {
                                            return r || v(t, e), !0
                                        }
                                        return !1
                                    }

                                    function m(t, e) {
                                        t !== e && f(t, e) || g(t, e)
                                    }

                                    function g(t, e) {
                                        "pending" === t.state_ && (t.state_ = "sealed", t.data_ = e, d(_, t))
                                    }

                                    function v(t, e) {
                                        "pending" === t.state_ && (t.state_ = "sealed", t.data_ = e, d(x, t))
                                    }

                                    function y(t) {
                                        var e = t.then_;
                                        t.then_ = void 0;
                                        for (var r = 0; r < e.length; r++) p(e[r])
                                    }

                                    function _(t) {
                                        t.state_ = "fulfilled", y(t)
                                    }

                                    function x(t) {
                                        t.state_ = "rejected", y(t)
                                    }

                                    function b(t) {
                                        if ("function" != typeof t) throw new TypeError("Promise constructor takes a function argument");
                                        if (this instanceof b == !1) throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");
                                        this.then_ = [],
                                            function (t, e) {
                                                function r(t) {
                                                    v(e, t)
                                                }
                                                try {
                                                    t((function (t) {
                                                        m(e, t)
                                                    }), r)
                                                } catch (t) {
                                                    r(t)
                                                }
                                            }(t, this)
                                    }
                                    b.prototype = {
                                        constructor: b,
                                        state_: "pending",
                                        then_: null,
                                        data_: void 0,
                                        then: function (t, e) {
                                            var r = {
                                                owner: this,
                                                then: new this.constructor(o),
                                                fulfilled: t,
                                                rejected: e
                                            };
                                            return "fulfilled" === this.state_ || "rejected" === this.state_ ? d(p, r) : this.then_.push(r), r.then
                                        },
                                        catch: function (t) {
                                            return this.then(null, t)
                                        }
                                    }, b.all = function (t) {
                                        if (!s(t)) throw new TypeError("You must pass an array to Promise.all().");
                                        return new this((function (e, r) {
                                            var i = [],
                                                n = 0;

                                            function o(t) {
                                                return n++,
                                                    function (r) {
                                                        i[t] = r, --n || e(i)
                                                    }
                                            }
                                            for (var s, a = 0; a < t.length; a++)(s = t[a]) && "function" == typeof s.then ? s.then(o(a), r) : i[a] = s;
                                            n || e(i)
                                        }))
                                    }, b.race = function (t) {
                                        if (!s(t)) throw new TypeError("You must pass an array to Promise.race().");
                                        return new this((function (e, r) {
                                            for (var i, n = 0; n < t.length; n++)(i = t[n]) && "function" == typeof i.then ? i.then(e, r) : e(i)
                                        }))
                                    }, b.resolve = function (t) {
                                        return t && "object" === a(t) && t.constructor === this ? t : new this((function (e) {
                                            e(t)
                                        }))
                                    }, b.reject = function (t) {
                                        return new this((function (e, r) {
                                            r(t)
                                        }))
                                    }
                                }(void 0 !== o.a ? o.a : void 0 !== r ? r : "undefined" != typeof self ? self : r)
                            })),
                            c = (l.Promise, l.Polyfill),
                            _ = Object.getOwnPropertySymbols,
                            x = Object.prototype.hasOwnProperty,
                            b = Object.prototype.propertyIsEnumerable;

                        function E(t) {
                            if (null == t) throw new TypeError("Object.assign cannot be called with null or undefined");
                            return Object(t)
                        }
                        var T = function () {
                            try {
                                if (!Object.assign) return !1;
                                var t = new String("abc");
                                if (t[5] = "de", "5" === Object.getOwnPropertyNames(t)[0]) return !1;
                                for (var e = {}, r = 0; r < 10; r++) e["_" + String.fromCharCode(r)] = r;
                                if ("0123456789" !== Object.getOwnPropertyNames(e).map((function (t) {
                                        return e[t]
                                    })).join("")) return !1;
                                var i = {};
                                return "abcdefghijklmnopqrst".split("").forEach((function (t) {
                                    i[t] = t
                                })), "abcdefghijklmnopqrst" === Object.keys(Object.assign({}, i)).join("")
                            } catch (t) {
                                return !1
                            }
                        }() ? Object.assign : function (t, e) {
                            for (var r, i, n = arguments, o = E(t), s = 1; s < arguments.length; s++) {
                                for (var a in r = Object(n[s])) x.call(r, a) && (o[a] = r[a]);
                                if (_) {
                                    i = _(r);
                                    for (var h = 0; h < i.length; h++) b.call(r, i[h]) && (o[i[h]] = r[i[h]])
                                }
                            }
                            return o
                        };
                        /*!
                         * @pixi/polyfill - v5.2.1
                         * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                         *
                         * @pixi/polyfill is licensed under the MIT License.
                         * http://www.opensource.org/licenses/mit-license
                         */
                        o.a.Promise || (o.a.Promise = c), Object.assign || (Object.assign = T);
                        var w = "undefined" != typeof globalThis ? globalThis : void 0 !== o.a ? o.a : void 0 !== t ? t : "undefined" != typeof self ? self : {};
                        if (Date.now && Date.prototype.getTime || (Date.now = function () {
                                return (new Date).getTime()
                            }), !w.performance || !w.performance.now) {
                            var S = Date.now();
                            w.performance || (w.performance = {}), w.performance.now = function () {
                                return Date.now() - S
                            }
                        }
                        for (var I = Date.now(), P = ["ms", "moz", "webkit", "o"], A = 0; A < P.length && !w.requestAnimationFrame; ++A) {
                            var O = P[A];
                            w.requestAnimationFrame = w[O + "RequestAnimationFrame"], w.cancelAnimationFrame = w[O + "CancelAnimationFrame"] || w[O + "CancelRequestAnimationFrame"]
                        }
                        w.requestAnimationFrame || (w.requestAnimationFrame = function (t) {
                            if ("function" != typeof t) throw new TypeError(t + "is not a function");
                            var e = Date.now(),
                                r = 16 + I - e;
                            return r < 0 && (r = 0), I = e, setTimeout((function () {
                                I = Date.now(), t(performance.now())
                            }), r)
                        }), w.cancelAnimationFrame || (w.cancelAnimationFrame = function (t) {
                            return clearTimeout(t)
                        }), Math.sign || (Math.sign = function (t) {
                            return 0 === (t = Number(t)) || isNaN(t) ? t : t > 0 ? 1 : -1
                        }), Number.isInteger || (Number.isInteger = function (t) {
                            return "number" == typeof t && isFinite(t) && Math.floor(t) === t
                        }), o.a.ArrayBuffer || (o.a.ArrayBuffer = Array), o.a.Float32Array || (o.a.Float32Array = Array), o.a.Uint32Array || (o.a.Uint32Array = Array), o.a.Uint16Array || (o.a.Uint16Array = Array), o.a.Uint8Array || (o.a.Uint8Array = Array), o.a.Int32Array || (o.a.Int32Array = Array);
                        var D = /iPhone/i,
                            C = /iPod/i,
                            M = /iPad/i,
                            R = /\bAndroid(?:.+)Mobile\b/i,
                            N = /Android/i,
                            L = /(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,
                            F = /Silk/i,
                            B = /Windows Phone/i,
                            U = /\bWindows(?:.+)ARM\b/i,
                            k = /BlackBerry/i,
                            X = /BB10/i,
                            j = /Opera Mini/i,
                            H = /\b(CriOS|Chrome)(?:.+)Mobile/i,
                            G = /Mobile(?:.+)Firefox\b/i;

                        function Y(t, e) {
                            return t.test(e)
                        }
                        /*!
                         * @pixi/settings - v5.2.1
                         * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                         *
                         * @pixi/settings is licensed under the MIT License.
                         * http://www.opensource.org/licenses/mit-license
                         */
                        var z = function (t) {
                            var e = (t = t || (void 0 !== m ? m.userAgent : "")).split("[FBAN");
                            void 0 !== e[1] && (t = e[0]), void 0 !== (e = t.split("Twitter"))[1] && (t = e[0]);
                            var r = {
                                apple: {
                                    phone: Y(D, t) && !Y(B, t),
                                    ipod: Y(C, t),
                                    tablet: !Y(D, t) && Y(M, t) && !Y(B, t),
                                    device: (Y(D, t) || Y(C, t) || Y(M, t)) && !Y(B, t)
                                },
                                amazon: {
                                    phone: Y(L, t),
                                    tablet: !Y(L, t) && Y(F, t),
                                    device: Y(L, t) || Y(F, t)
                                },
                                android: {
                                    phone: !Y(B, t) && Y(L, t) || !Y(B, t) && Y(R, t),
                                    tablet: !Y(B, t) && !Y(L, t) && !Y(R, t) && (Y(F, t) || Y(N, t)),
                                    device: !Y(B, t) && (Y(L, t) || Y(F, t) || Y(R, t) || Y(N, t)) || Y(/\bokhttp\b/i, t)
                                },
                                windows: {
                                    phone: Y(B, t),
                                    tablet: Y(U, t),
                                    device: Y(B, t) || Y(U, t)
                                },
                                other: {
                                    blackberry: Y(k, t),
                                    blackberry10: Y(X, t),
                                    opera: Y(j, t),
                                    firefox: Y(G, t),
                                    chrome: Y(H, t),
                                    device: Y(k, t) || Y(X, t) || Y(j, t) || Y(G, t) || Y(H, t)
                                },
                                any: !1,
                                phone: !1,
                                tablet: !1
                            };
                            return r.any = r.apple.device || r.android.device || r.windows.device || r.other.device, r.phone = r.apple.phone || r.android.phone || r.windows.phone, r.tablet = r.apple.tablet || r.android.tablet || r.windows.tablet, r
                        }();
                        var V = {
                                MIPMAP_TEXTURES: 0,
                                ANISOTROPIC_LEVEL: 0,
                                RESOLUTION: 1,
                                FILTER_RESOLUTION: 1,
                                SPRITE_MAX_TEXTURES: function (t) {
                                    var e = !0;
                                    if (z.tablet || z.phone) {
                                        if (e = !1, z.apple.device) {
                                            var r = m.userAgent.match(/OS (\d+)_(\d+)?/);
                                            if (r) parseInt(r[1], 10) >= 11 && (e = !0)
                                        }
                                        if (z.android.device) {
                                            var i = m.userAgent.match(/Android\s([0-9.]*)/);
                                            if (i) parseInt(i[1], 10) >= 7 && (e = !0)
                                        }
                                    }
                                    return e ? t : 4
                                }(32),
                                SPRITE_BATCH_SIZE: 4096,
                                RENDER_OPTIONS: {
                                    view: null,
                                    antialias: !1,
                                    forceFXAA: !1,
                                    autoDensity: !1,
                                    transparent: !1,
                                    backgroundColor: 0,
                                    clearBeforeRender: !0,
                                    preserveDrawingBuffer: !1,
                                    width: 800,
                                    height: 600,
                                    legacy: !1
                                },
                                GC_MODE: 0,
                                GC_MAX_IDLE: 3600,
                                GC_MAX_CHECK_COUNT: 600,
                                WRAP_MODE: 33071,
                                SCALE_MODE: 1,
                                PRECISION_VERTEX: "highp",
                                PRECISION_FRAGMENT: z.apple.device ? "highp" : "mediump",
                                CAN_UPLOAD_SAME_BUFFER: !z.apple.device,
                                CREATE_IMAGE_BITMAP: !1,
                                ROUND_PIXELS: !1
                            },
                            W = u((function (t) {
                                var e = Object.prototype.hasOwnProperty,
                                    r = "~";

                                function i() {}

                                function n(t, e, r) {
                                    this.fn = t, this.context = e, this.once = r || !1
                                }

                                function o(t, e, i, o, s) {
                                    if ("function" != typeof i) throw new TypeError("The listener must be a function");
                                    var a = new n(i, o || t, s),
                                        h = r ? r + e : e;
                                    return t._events[h] ? t._events[h].fn ? t._events[h] = [t._events[h], a] : t._events[h].push(a) : (t._events[h] = a, t._eventsCount++), t
                                }

                                function s(t, e) {
                                    0 == --t._eventsCount ? t._events = new i : delete t._events[e]
                                }

                                function a() {
                                    this._events = new i, this._eventsCount = 0
                                }
                                Object.create && (i.prototype = Object.create(null), (new i).__proto__ || (r = !1)), a.prototype.eventNames = function () {
                                    var t, i, n = [];
                                    if (0 === this._eventsCount) return n;
                                    for (i in t = this._events) e.call(t, i) && n.push(r ? i.slice(1) : i);
                                    return Object.getOwnPropertySymbols ? n.concat(Object.getOwnPropertySymbols(t)) : n
                                }, a.prototype.listeners = function (t) {
                                    var e = r ? r + t : t,
                                        i = this._events[e];
                                    if (!i) return [];
                                    if (i.fn) return [i.fn];
                                    for (var n = 0, o = i.length, s = new Array(o); n < o; n++) s[n] = i[n].fn;
                                    return s
                                }, a.prototype.listenerCount = function (t) {
                                    var e = r ? r + t : t,
                                        i = this._events[e];
                                    return i ? i.fn ? 1 : i.length : 0
                                }, a.prototype.emit = function (t, e, i, n, o, s) {
                                    var a = arguments,
                                        h = r ? r + t : t;
                                    if (!this._events[h]) return !1;
                                    var u, l, c = this._events[h],
                                        d = arguments.length;
                                    if (c.fn) {
                                        switch (c.once && this.removeListener(t, c.fn, void 0, !0), d) {
                                            case 1:
                                                return c.fn.call(c.context), !0;
                                            case 2:
                                                return c.fn.call(c.context, e), !0;
                                            case 3:
                                                return c.fn.call(c.context, e, i), !0;
                                            case 4:
                                                return c.fn.call(c.context, e, i, n), !0;
                                            case 5:
                                                return c.fn.call(c.context, e, i, n, o), !0;
                                            case 6:
                                                return c.fn.call(c.context, e, i, n, o, s), !0
                                        }
                                        for (l = 1, u = new Array(d - 1); l < d; l++) u[l - 1] = a[l];
                                        c.fn.apply(c.context, u)
                                    } else {
                                        var p, f = c.length;
                                        for (l = 0; l < f; l++) switch (c[l].once && this.removeListener(t, c[l].fn, void 0, !0), d) {
                                            case 1:
                                                c[l].fn.call(c[l].context);
                                                break;
                                            case 2:
                                                c[l].fn.call(c[l].context, e);
                                                break;
                                            case 3:
                                                c[l].fn.call(c[l].context, e, i);
                                                break;
                                            case 4:
                                                c[l].fn.call(c[l].context, e, i, n);
                                                break;
                                            default:
                                                if (!u)
                                                    for (p = 1, u = new Array(d - 1); p < d; p++) u[p - 1] = a[p];
                                                c[l].fn.apply(c[l].context, u)
                                        }
                                    }
                                    return !0
                                }, a.prototype.on = function (t, e, r) {
                                    return o(this, t, e, r, !1)
                                }, a.prototype.once = function (t, e, r) {
                                    return o(this, t, e, r, !0)
                                }, a.prototype.removeListener = function (t, e, i, n) {
                                    var o = r ? r + t : t;
                                    if (!this._events[o]) return this;
                                    if (!e) return s(this, o), this;
                                    var a = this._events[o];
                                    if (a.fn) a.fn !== e || n && !a.once || i && a.context !== i || s(this, o);
                                    else {
                                        for (var h = 0, u = [], l = a.length; h < l; h++)(a[h].fn !== e || n && !a[h].once || i && a[h].context !== i) && u.push(a[h]);
                                        u.length ? this._events[o] = 1 === u.length ? u[0] : u : s(this, o)
                                    }
                                    return this
                                }, a.prototype.removeAllListeners = function (t) {
                                    var e;
                                    return t ? (e = r ? r + t : t, this._events[e] && s(this, e)) : (this._events = new i, this._eventsCount = 0), this
                                }, a.prototype.off = a.prototype.removeListener, a.prototype.addListener = a.prototype.on, a.prefixed = r, a.EventEmitter = a, t.exports = a
                            })),
                            q = Z,
                            K = Z;

                        function Z(t, e, r) {
                            r = r || 2;
                            var i, n, o, s, a, h, u, l = e && e.length,
                                c = l ? e[0] * r : t.length,
                                d = $(t, 0, c, r, !0),
                                p = [];
                            if (!d || d.next === d.prev) return p;
                            if (l && (d = function (t, e, r, i) {
                                    var n, o, s, a, h, u = [];
                                    for (n = 0, o = e.length; n < o; n++) s = e[n] * i, a = n < o - 1 ? e[n + 1] * i : t.length, (h = $(t, s, a, i, !1)) === h.next && (h.steiner = !0), u.push(ht(h));
                                    for (u.sort(nt), n = 0; n < u.length; n++) ot(u[n], r), r = J(r, r.next);
                                    return r
                                }(t, e, d, r)), t.length > 80 * r) {
                                i = o = t[0], n = s = t[1];
                                for (var f = r; f < c; f += r)(a = t[f]) < i && (i = a), (h = t[f + 1]) < n && (n = h), a > o && (o = a), h > s && (s = h);
                                u = 0 !== (u = Math.max(o - i, s - n)) ? 1 / u : 0
                            }
                            return Q(d, p, r, i, n, u), p
                        }

                        function $(t, e, r, i, n) {
                            var o, s;
                            if (n === bt(t, e, r, i) > 0)
                                for (o = e; o < r; o += i) s = yt(o, t[o], t[o + 1], s);
                            else
                                for (o = r - i; o >= e; o -= i) s = yt(o, t[o], t[o + 1], s);
                            return s && dt(s, s.next) && (_t(s), s = s.next), s
                        }

                        function J(t, e) {
                            if (!t) return t;
                            e || (e = t);
                            var r, i = t;
                            do {
                                if (r = !1, i.steiner || !dt(i, i.next) && 0 !== ct(i.prev, i, i.next)) i = i.next;
                                else {
                                    if (_t(i), (i = e = i.prev) === i.next) break;
                                    r = !0
                                }
                            } while (r || i !== e);
                            return e
                        }

                        function Q(t, e, r, i, n, o, s) {
                            if (t) {
                                !s && o && function (t, e, r, i) {
                                    var n = t;
                                    do {
                                        null === n.z && (n.z = at(n.x, n.y, e, r, i)), n.prevZ = n.prev, n.nextZ = n.next, n = n.next
                                    } while (n !== t);
                                    n.prevZ.nextZ = null, n.prevZ = null,
                                        function (t) {
                                            var e, r, i, n, o, s, a, h, u = 1;
                                            do {
                                                for (r = t, t = null, o = null, s = 0; r;) {
                                                    for (s++, i = r, a = 0, e = 0; e < u && (a++, i = i.nextZ); e++);
                                                    for (h = u; a > 0 || h > 0 && i;) 0 !== a && (0 === h || !i || r.z <= i.z) ? (n = r, r = r.nextZ, a--) : (n = i, i = i.nextZ, h--), o ? o.nextZ = n : t = n, n.prevZ = o, o = n;
                                                    r = i
                                                }
                                                o.nextZ = null, u *= 2
                                            } while (s > 1)
                                        }(n)
                                }(t, i, n, o);
                                for (var a, h, u = t; t.prev !== t.next;)
                                    if (a = t.prev, h = t.next, o ? et(t, i, n, o) : tt(t)) e.push(a.i / r), e.push(t.i / r), e.push(h.i / r), _t(t), t = h.next, u = h.next;
                                    else if ((t = h) === u) {
                                    s ? 1 === s ? Q(t = rt(J(t), e, r), e, r, i, n, o, 2) : 2 === s && it(t, e, r, i, n, o) : Q(J(t), e, r, i, n, o, 1);
                                    break
                                }
                            }
                        }

                        function tt(t) {
                            var e = t.prev,
                                r = t,
                                i = t.next;
                            if (ct(e, r, i) >= 0) return !1;
                            for (var n = t.next.next; n !== t.prev;) {
                                if (ut(e.x, e.y, r.x, r.y, i.x, i.y, n.x, n.y) && ct(n.prev, n, n.next) >= 0) return !1;
                                n = n.next
                            }
                            return !0
                        }

                        function et(t, e, r, i) {
                            var n = t.prev,
                                o = t,
                                s = t.next;
                            if (ct(n, o, s) >= 0) return !1;
                            for (var a = n.x < o.x ? n.x < s.x ? n.x : s.x : o.x < s.x ? o.x : s.x, h = n.y < o.y ? n.y < s.y ? n.y : s.y : o.y < s.y ? o.y : s.y, u = n.x > o.x ? n.x > s.x ? n.x : s.x : o.x > s.x ? o.x : s.x, l = n.y > o.y ? n.y > s.y ? n.y : s.y : o.y > s.y ? o.y : s.y, c = at(a, h, e, r, i), d = at(u, l, e, r, i), p = t.prevZ, f = t.nextZ; p && p.z >= c && f && f.z <= d;) {
                                if (p !== t.prev && p !== t.next && ut(n.x, n.y, o.x, o.y, s.x, s.y, p.x, p.y) && ct(p.prev, p, p.next) >= 0) return !1;
                                if (p = p.prevZ, f !== t.prev && f !== t.next && ut(n.x, n.y, o.x, o.y, s.x, s.y, f.x, f.y) && ct(f.prev, f, f.next) >= 0) return !1;
                                f = f.nextZ
                            }
                            for (; p && p.z >= c;) {
                                if (p !== t.prev && p !== t.next && ut(n.x, n.y, o.x, o.y, s.x, s.y, p.x, p.y) && ct(p.prev, p, p.next) >= 0) return !1;
                                p = p.prevZ
                            }
                            for (; f && f.z <= d;) {
                                if (f !== t.prev && f !== t.next && ut(n.x, n.y, o.x, o.y, s.x, s.y, f.x, f.y) && ct(f.prev, f, f.next) >= 0) return !1;
                                f = f.nextZ
                            }
                            return !0
                        }

                        function rt(t, e, r) {
                            var i = t;
                            do {
                                var n = i.prev,
                                    o = i.next.next;
                                !dt(n, o) && pt(n, i, i.next, o) && gt(n, o) && gt(o, n) && (e.push(n.i / r), e.push(i.i / r), e.push(o.i / r), _t(i), _t(i.next), i = t = o), i = i.next
                            } while (i !== t);
                            return J(i)
                        }

                        function it(t, e, r, i, n, o) {
                            var s = t;
                            do {
                                for (var a = s.next.next; a !== s.prev;) {
                                    if (s.i !== a.i && lt(s, a)) {
                                        var h = vt(s, a);
                                        return s = J(s, s.next), h = J(h, h.next), Q(s, e, r, i, n, o), void Q(h, e, r, i, n, o)
                                    }
                                    a = a.next
                                }
                                s = s.next
                            } while (s !== t)
                        }

                        function nt(t, e) {
                            return t.x - e.x
                        }

                        function ot(t, e) {
                            if (e = function (t, e) {
                                    var r, i = e,
                                        n = t.x,
                                        o = t.y,
                                        s = -1 / 0;
                                    do {
                                        if (o <= i.y && o >= i.next.y && i.next.y !== i.y) {
                                            var a = i.x + (o - i.y) * (i.next.x - i.x) / (i.next.y - i.y);
                                            if (a <= n && a > s) {
                                                if (s = a, a === n) {
                                                    if (o === i.y) return i;
                                                    if (o === i.next.y) return i.next
                                                }
                                                r = i.x < i.next.x ? i : i.next
                                            }
                                        }
                                        i = i.next
                                    } while (i !== e);
                                    if (!r) return null;
                                    if (n === s) return r;
                                    var h, u = r,
                                        l = r.x,
                                        c = r.y,
                                        d = 1 / 0;
                                    i = r;
                                    do {
                                        n >= i.x && i.x >= l && n !== i.x && ut(o < c ? n : s, o, l, c, o < c ? s : n, o, i.x, i.y) && (h = Math.abs(o - i.y) / (n - i.x), gt(i, t) && (h < d || h === d && (i.x > r.x || i.x === r.x && st(r, i))) && (r = i, d = h)), i = i.next
                                    } while (i !== u);
                                    return r
                                }(t, e)) {
                                var r = vt(e, t);
                                J(e, e.next), J(r, r.next)
                            }
                        }

                        function st(t, e) {
                            return ct(t.prev, t, e.prev) < 0 && ct(e.next, t, t.next) < 0
                        }

                        function at(t, e, r, i, n) {
                            return (t = 1431655765 & ((t = 858993459 & ((t = 252645135 & ((t = 16711935 & ((t = 32767 * (t - r) * n) | t << 8)) | t << 4)) | t << 2)) | t << 1)) | (e = 1431655765 & ((e = 858993459 & ((e = 252645135 & ((e = 16711935 & ((e = 32767 * (e - i) * n) | e << 8)) | e << 4)) | e << 2)) | e << 1)) << 1
                        }

                        function ht(t) {
                            var e = t,
                                r = t;
                            do {
                                (e.x < r.x || e.x === r.x && e.y < r.y) && (r = e), e = e.next
                            } while (e !== t);
                            return r
                        }

                        function ut(t, e, r, i, n, o, s, a) {
                            return (n - s) * (e - a) - (t - s) * (o - a) >= 0 && (t - s) * (i - a) - (r - s) * (e - a) >= 0 && (r - s) * (o - a) - (n - s) * (i - a) >= 0
                        }

                        function lt(t, e) {
                            return t.next.i !== e.i && t.prev.i !== e.i && ! function (t, e) {
                                var r = t;
                                do {
                                    if (r.i !== t.i && r.next.i !== t.i && r.i !== e.i && r.next.i !== e.i && pt(r, r.next, t, e)) return !0;
                                    r = r.next
                                } while (r !== t);
                                return !1
                            }(t, e) && (gt(t, e) && gt(e, t) && function (t, e) {
                                var r = t,
                                    i = !1,
                                    n = (t.x + e.x) / 2,
                                    o = (t.y + e.y) / 2;
                                do {
                                    r.y > o != r.next.y > o && r.next.y !== r.y && n < (r.next.x - r.x) * (o - r.y) / (r.next.y - r.y) + r.x && (i = !i), r = r.next
                                } while (r !== t);
                                return i
                            }(t, e) && (ct(t.prev, t, e.prev) || ct(t, e.prev, e)) || dt(t, e) && ct(t.prev, t, t.next) > 0 && ct(e.prev, e, e.next) > 0)
                        }

                        function ct(t, e, r) {
                            return (e.y - t.y) * (r.x - e.x) - (e.x - t.x) * (r.y - e.y)
                        }

                        function dt(t, e) {
                            return t.x === e.x && t.y === e.y
                        }

                        function pt(t, e, r, i) {
                            var n = mt(ct(t, e, r)),
                                o = mt(ct(t, e, i)),
                                s = mt(ct(r, i, t)),
                                a = mt(ct(r, i, e));
                            return n !== o && s !== a || (!(0 !== n || !ft(t, r, e)) || (!(0 !== o || !ft(t, i, e)) || (!(0 !== s || !ft(r, t, i)) || !(0 !== a || !ft(r, e, i)))))
                        }

                        function ft(t, e, r) {
                            return e.x <= Math.max(t.x, r.x) && e.x >= Math.min(t.x, r.x) && e.y <= Math.max(t.y, r.y) && e.y >= Math.min(t.y, r.y)
                        }

                        function mt(t) {
                            return t > 0 ? 1 : t < 0 ? -1 : 0
                        }

                        function gt(t, e) {
                            return ct(t.prev, t, t.next) < 0 ? ct(t, e, t.next) >= 0 && ct(t, t.prev, e) >= 0 : ct(t, e, t.prev) < 0 || ct(t, t.next, e) < 0
                        }

                        function vt(t, e) {
                            var r = new xt(t.i, t.x, t.y),
                                i = new xt(e.i, e.x, e.y),
                                n = t.next,
                                o = e.prev;
                            return t.next = e, e.prev = t, r.next = n, n.prev = r, i.next = r, r.prev = i, o.next = i, i.prev = o, i
                        }

                        function yt(t, e, r, i) {
                            var n = new xt(t, e, r);
                            return i ? (n.next = i.next, n.prev = i, i.next.prev = n, i.next = n) : (n.prev = n, n.next = n), n
                        }

                        function _t(t) {
                            t.next.prev = t.prev, t.prev.next = t.next, t.prevZ && (t.prevZ.nextZ = t.nextZ), t.nextZ && (t.nextZ.prevZ = t.prevZ)
                        }

                        function xt(t, e, r) {
                            this.i = t, this.x = e, this.y = r, this.prev = null, this.next = null, this.z = null, this.prevZ = null, this.nextZ = null, this.steiner = !1
                        }

                        function bt(t, e, r, i) {
                            for (var n = 0, o = e, s = r - i; o < r; o += i) n += (t[s] - t[o]) * (t[o + 1] + t[s + 1]), s = o;
                            return n
                        }
                        Z.deviation = function (t, e, r, i) {
                            var n = e && e.length,
                                o = n ? e[0] * r : t.length,
                                s = Math.abs(bt(t, 0, o, r));
                            if (n)
                                for (var a = 0, h = e.length; a < h; a++) {
                                    var u = e[a] * r,
                                        l = a < h - 1 ? e[a + 1] * r : t.length;
                                    s -= Math.abs(bt(t, u, l, r))
                                }
                            var c = 0;
                            for (a = 0; a < i.length; a += 3) {
                                var d = i[a] * r,
                                    p = i[a + 1] * r,
                                    f = i[a + 2] * r;
                                c += Math.abs((t[d] - t[f]) * (t[p + 1] - t[d + 1]) - (t[d] - t[p]) * (t[f + 1] - t[d + 1]))
                            }
                            return 0 === s && 0 === c ? 0 : Math.abs((c - s) / s)
                        }, Z.flatten = function (t) {
                            for (var e = t[0][0].length, r = {
                                    vertices: [],
                                    holes: [],
                                    dimensions: e
                                }, i = 0, n = 0; n < t.length; n++) {
                                for (var o = 0; o < t[n].length; o++)
                                    for (var s = 0; s < e; s++) r.vertices.push(t[n][o][s]);
                                n > 0 && (i += t[n - 1].length, r.holes.push(i))
                            }
                            return r
                        }, q.default = K;
                        var Et = u((function (t, e) {
                                ! function (i) {
                                    var n = e && !e.nodeType && e,
                                        o = t && !t.nodeType && t,
                                        s = "object" == a(r) && r;
                                    s.global !== s && s.window !== s && s.self !== s || (i = s);
                                    var h, u, l = 2147483647,
                                        c = /^xn--/,
                                        d = /[^\x20-\x7E]/,
                                        p = /[\x2E\u3002\uFF0E\uFF61]/g,
                                        f = {
                                            overflow: "Overflow: input needs wider integers to process",
                                            "not-basic": "Illegal input >= 0x80 (not a basic code point)",
                                            "invalid-input": "Invalid input"
                                        },
                                        m = Math.floor,
                                        g = String.fromCharCode;

                                    function v(t) {
                                        throw RangeError(f[t])
                                    }

                                    function y(t, e) {
                                        for (var r = t.length, i = []; r--;) i[r] = e(t[r]);
                                        return i
                                    }

                                    function _(t, e) {
                                        var r = t.split("@"),
                                            i = "";
                                        return r.length > 1 && (i = r[0] + "@", t = r[1]), i + y((t = t.replace(p, ".")).split("."), e).join(".")
                                    }

                                    function x(t) {
                                        for (var e, r, i = [], n = 0, o = t.length; n < o;)(e = t.charCodeAt(n++)) >= 55296 && e <= 56319 && n < o ? 56320 == (64512 & (r = t.charCodeAt(n++))) ? i.push(((1023 & e) << 10) + (1023 & r) + 65536) : (i.push(e), n--) : i.push(e);
                                        return i
                                    }

                                    function b(t) {
                                        return y(t, (function (t) {
                                            var e = "";
                                            return t > 65535 && (e += g((t -= 65536) >>> 10 & 1023 | 55296), t = 56320 | 1023 & t), e += g(t)
                                        })).join("")
                                    }

                                    function E(t, e) {
                                        return t + 22 + 75 * (t < 26) - ((0 != e) << 5)
                                    }

                                    function T(t, e, r) {
                                        var i = 0;
                                        for (t = r ? m(t / 700) : t >> 1, t += m(t / e); t > 455; i += 36) t = m(t / 35);
                                        return m(i + 36 * t / (t + 38))
                                    }

                                    function w(t) {
                                        var e, r, i, n, o, s, a, h, u, c, d, p = [],
                                            f = t.length,
                                            g = 0,
                                            y = 128,
                                            _ = 72;
                                        for ((r = t.lastIndexOf("-")) < 0 && (r = 0), i = 0; i < r; ++i) t.charCodeAt(i) >= 128 && v("not-basic"), p.push(t.charCodeAt(i));
                                        for (n = r > 0 ? r + 1 : 0; n < f;) {
                                            for (o = g, s = 1, a = 36; n >= f && v("invalid-input"), ((h = (d = t.charCodeAt(n++)) - 48 < 10 ? d - 22 : d - 65 < 26 ? d - 65 : d - 97 < 26 ? d - 97 : 36) >= 36 || h > m((l - g) / s)) && v("overflow"), g += h * s, !(h < (u = a <= _ ? 1 : a >= _ + 26 ? 26 : a - _)); a += 36) s > m(l / (c = 36 - u)) && v("overflow"), s *= c;
                                            _ = T(g - o, e = p.length + 1, 0 == o), m(g / e) > l - y && v("overflow"), y += m(g / e), g %= e, p.splice(g++, 0, y)
                                        }
                                        return b(p)
                                    }

                                    function S(t) {
                                        var e, r, i, n, o, s, a, h, u, c, d, p, f, y, _, b = [];
                                        for (p = (t = x(t)).length, e = 128, r = 0, o = 72, s = 0; s < p; ++s)(d = t[s]) < 128 && b.push(g(d));
                                        for (i = n = b.length, n && b.push("-"); i < p;) {
                                            for (a = l, s = 0; s < p; ++s)(d = t[s]) >= e && d < a && (a = d);
                                            for (a - e > m((l - r) / (f = i + 1)) && v("overflow"), r += (a - e) * f, e = a, s = 0; s < p; ++s)
                                                if ((d = t[s]) < e && ++r > l && v("overflow"), d == e) {
                                                    for (h = r, u = 36; !(h < (c = u <= o ? 1 : u >= o + 26 ? 26 : u - o)); u += 36) _ = h - c, y = 36 - c, b.push(g(E(c + _ % y, 0))), h = m(_ / y);
                                                    b.push(g(E(h, 0))), o = T(r, f, i == n), r = 0, ++i
                                                }++ r, ++e
                                        }
                                        return b.join("")
                                    }
                                    if (h = {
                                            version: "1.3.2",
                                            ucs2: {
                                                decode: x,
                                                encode: b
                                            },
                                            decode: w,
                                            encode: S,
                                            toASCII: function (t) {
                                                return _(t, (function (t) {
                                                    return d.test(t) ? "xn--" + S(t) : t
                                                }))
                                            },
                                            toUnicode: function (t) {
                                                return _(t, (function (t) {
                                                    return c.test(t) ? w(t.slice(4).toLowerCase()) : t
                                                }))
                                            }
                                        }, n && o)
                                        if (t.exports == n) o.exports = h;
                                        else
                                            for (u in h) h.hasOwnProperty(u) && (n[u] = h[u]);
                                    else i.punycode = h
                                }(r)
                            })),
                            Tt = function (t) {
                                return "string" == typeof t
                            },
                            wt = function (t) {
                                return "object" === a(t) && null !== t
                            },
                            St = function (t) {
                                return null === t
                            },
                            It = function (t) {
                                return null == t
                            };

                        function Pt(t, e) {
                            return Object.prototype.hasOwnProperty.call(t, e)
                        }
                        var At = function (t, e, r, i) {
                                e = e || "&", r = r || "=";
                                var n = {};
                                if ("string" != typeof t || 0 === t.length) return n;
                                var o = /\+/g;
                                t = t.split(e);
                                var s = 1e3;
                                i && "number" == typeof i.maxKeys && (s = i.maxKeys);
                                var a = t.length;
                                s > 0 && a > s && (a = s);
                                for (var h = 0; h < a; ++h) {
                                    var u, l, c, d, p = t[h].replace(o, "%20"),
                                        f = p.indexOf(r);
                                    f >= 0 ? (u = p.substr(0, f), l = p.substr(f + 1)) : (u = p, l = ""), c = decodeURIComponent(u), d = decodeURIComponent(l), Pt(n, c) ? Array.isArray(n[c]) ? n[c].push(d) : n[c] = [n[c], d] : n[c] = d
                                }
                                return n
                            },
                            Ot = function (t) {
                                switch (a(t)) {
                                    case "string":
                                        return t;
                                    case "boolean":
                                        return t ? "true" : "false";
                                    case "number":
                                        return isFinite(t) ? t : "";
                                    default:
                                        return ""
                                }
                            },
                            Dt = function (t, e, r, i) {
                                return e = e || "&", r = r || "=", null === t && (t = void 0), "object" === a(t) ? Object.keys(t).map((function (i) {
                                    var n = encodeURIComponent(Ot(i)) + r;
                                    return Array.isArray(t[i]) ? t[i].map((function (t) {
                                        return n + encodeURIComponent(Ot(t))
                                    })).join(e) : n + encodeURIComponent(Ot(t[i]))
                                })).join(e) : i ? encodeURIComponent(Ot(i)) + r + encodeURIComponent(Ot(t)) : ""
                            },
                            Ct = u((function (t, e) {
                                e.decode = e.parse = At, e.encode = e.stringify = Dt
                            })),
                            Mt = (Ct.decode, Ct.parse, Ct.encode, Ct.stringify, Zt),
                            Rt = function (t, e) {
                                return Zt(t, !1, !0).resolve(e)
                            },
                            Nt = function (t, e) {
                                if (!t) return e;
                                return Zt(t, !1, !0).resolveObject(e)
                            },
                            Lt = function (t) {
                                Tt(t) && (t = Zt(t));
                                if (!(t instanceof Bt)) return Bt.prototype.format.call(t);
                                return t.format()
                            },
                            Ft = Bt;

                        function Bt() {
                            this.protocol = null, this.slashes = null, this.auth = null, this.host = null, this.port = null, this.hostname = null, this.hash = null, this.search = null, this.query = null, this.pathname = null, this.path = null, this.href = null
                        }
                        var Ut = /^([a-z0-9.+-]+:)/i,
                            kt = /:[0-9]*$/,
                            Xt = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,
                            jt = ["{", "}", "|", "\\", "^", "`"].concat(["<", ">", '"', "`", " ", "\r", "\n", "\t"]),
                            Ht = ["'"].concat(jt),
                            Gt = ["%", "/", "?", ";", "#"].concat(Ht),
                            Yt = ["/", "?", "#"],
                            zt = /^[+a-z0-9A-Z_-]{0,63}$/,
                            Vt = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,
                            Wt = {
                                javascript: !0,
                                "javascript:": !0
                            },
                            qt = {
                                javascript: !0,
                                "javascript:": !0
                            },
                            Kt = {
                                http: !0,
                                https: !0,
                                ftp: !0,
                                gopher: !0,
                                file: !0,
                                "http:": !0,
                                "https:": !0,
                                "ftp:": !0,
                                "gopher:": !0,
                                "file:": !0
                            };

                        function Zt(t, e, r) {
                            if (t && wt(t) && t instanceof Bt) return t;
                            var i = new Bt;
                            return i.parse(t, e, r), i
                        }
                        Bt.prototype.parse = function (t, e, r) {
                            if (!Tt(t)) throw new TypeError("Parameter 'url' must be a string, not " + a(t));
                            var i = t.indexOf("?"),
                                n = -1 !== i && i < t.indexOf("#") ? "?" : "#",
                                o = t.split(n);
                            o[0] = o[0].replace(/\\/g, "/");
                            var s = t = o.join(n);
                            if (s = s.trim(), !r && 1 === t.split("#").length) {
                                var h = Xt.exec(s);
                                if (h) return this.path = s, this.href = s, this.pathname = h[1], h[2] ? (this.search = h[2], this.query = e ? Ct.parse(this.search.substr(1)) : this.search.substr(1)) : e && (this.search = "", this.query = {}), this
                            }
                            var u = Ut.exec(s);
                            if (u) {
                                var l = (u = u[0]).toLowerCase();
                                this.protocol = l, s = s.substr(u.length)
                            }
                            if (r || u || s.match(/^\/\/[^@\/]+@[^@\/]+/)) {
                                var c = "//" === s.substr(0, 2);
                                !c || u && qt[u] || (s = s.substr(2), this.slashes = !0)
                            }
                            if (!qt[u] && (c || u && !Kt[u])) {
                                for (var d, p, f = -1, m = 0; m < Yt.length; m++) {
                                    -1 !== (g = s.indexOf(Yt[m])) && (-1 === f || g < f) && (f = g)
                                } - 1 !== (p = -1 === f ? s.lastIndexOf("@") : s.lastIndexOf("@", f)) && (d = s.slice(0, p), s = s.slice(p + 1), this.auth = decodeURIComponent(d)), f = -1;
                                for (m = 0; m < Gt.length; m++) {
                                    var g; - 1 !== (g = s.indexOf(Gt[m])) && (-1 === f || g < f) && (f = g)
                                } - 1 === f && (f = s.length), this.host = s.slice(0, f), s = s.slice(f), this.parseHost(), this.hostname = this.hostname || "";
                                var v = "[" === this.hostname[0] && "]" === this.hostname[this.hostname.length - 1];
                                if (!v)
                                    for (var y = this.hostname.split(/\./), _ = (m = 0, y.length); m < _; m++) {
                                        var x = y[m];
                                        if (x && !x.match(zt)) {
                                            for (var b = "", E = 0, T = x.length; E < T; E++) x.charCodeAt(E) > 127 ? b += "x" : b += x[E];
                                            if (!b.match(zt)) {
                                                var w = y.slice(0, m),
                                                    S = y.slice(m + 1),
                                                    I = x.match(Vt);
                                                I && (w.push(I[1]), S.unshift(I[2])), S.length && (s = "/" + S.join(".") + s), this.hostname = w.join(".");
                                                break
                                            }
                                        }
                                    }
                                this.hostname.length > 255 ? this.hostname = "" : this.hostname = this.hostname.toLowerCase(), v || (this.hostname = Et.toASCII(this.hostname));
                                var P = this.port ? ":" + this.port : "",
                                    A = this.hostname || "";
                                this.host = A + P, this.href += this.host, v && (this.hostname = this.hostname.substr(1, this.hostname.length - 2), "/" !== s[0] && (s = "/" + s))
                            }
                            if (!Wt[l])
                                for (m = 0, _ = Ht.length; m < _; m++) {
                                    var O = Ht[m];
                                    if (-1 !== s.indexOf(O)) {
                                        var D = encodeURIComponent(O);
                                        D === O && (D = escape(O)), s = s.split(O).join(D)
                                    }
                                }
                            var C = s.indexOf("#"); - 1 !== C && (this.hash = s.substr(C), s = s.slice(0, C));
                            var M = s.indexOf("?");
                            if (-1 !== M ? (this.search = s.substr(M), this.query = s.substr(M + 1), e && (this.query = Ct.parse(this.query)), s = s.slice(0, M)) : e && (this.search = "", this.query = {}), s && (this.pathname = s), Kt[l] && this.hostname && !this.pathname && (this.pathname = "/"), this.pathname || this.search) {
                                P = this.pathname || "";
                                var R = this.search || "";
                                this.path = P + R
                            }
                            return this.href = this.format(), this
                        }, Bt.prototype.format = function () {
                            var t = this.auth || "";
                            t && (t = (t = encodeURIComponent(t)).replace(/%3A/i, ":"), t += "@");
                            var e = this.protocol || "",
                                r = this.pathname || "",
                                i = this.hash || "",
                                n = !1,
                                o = "";
                            this.host ? n = t + this.host : this.hostname && (n = t + (-1 === this.hostname.indexOf(":") ? this.hostname : "[" + this.hostname + "]"), this.port && (n += ":" + this.port)), this.query && wt(this.query) && Object.keys(this.query).length && (o = Ct.stringify(this.query));
                            var s = this.search || o && "?" + o || "";
                            return e && ":" !== e.substr(-1) && (e += ":"), this.slashes || (!e || Kt[e]) && !1 !== n ? (n = "//" + (n || ""), r && "/" !== r.charAt(0) && (r = "/" + r)) : n || (n = ""), i && "#" !== i.charAt(0) && (i = "#" + i), s && "?" !== s.charAt(0) && (s = "?" + s), e + n + (r = r.replace(/[?#]/g, (function (t) {
                                return encodeURIComponent(t)
                            }))) + (s = s.replace("#", "%23")) + i
                        }, Bt.prototype.resolve = function (t) {
                            return this.resolveObject(Zt(t, !1, !0)).format()
                        }, Bt.prototype.resolveObject = function (t) {
                            if (Tt(t)) {
                                var e = new Bt;
                                e.parse(t, !1, !0), t = e
                            }
                            for (var r = new Bt, i = Object.keys(this), n = 0; n < i.length; n++) {
                                var o = i[n];
                                r[o] = this[o]
                            }
                            if (r.hash = t.hash, "" === t.href) return r.href = r.format(), r;
                            if (t.slashes && !t.protocol) {
                                for (var s = Object.keys(t), a = 0; a < s.length; a++) {
                                    var h = s[a];
                                    "protocol" !== h && (r[h] = t[h])
                                }
                                return Kt[r.protocol] && r.hostname && !r.pathname && (r.path = r.pathname = "/"), r.href = r.format(), r
                            }
                            if (t.protocol && t.protocol !== r.protocol) {
                                if (!Kt[t.protocol]) {
                                    for (var u = Object.keys(t), l = 0; l < u.length; l++) {
                                        var c = u[l];
                                        r[c] = t[c]
                                    }
                                    return r.href = r.format(), r
                                }
                                if (r.protocol = t.protocol, t.host || qt[t.protocol]) r.pathname = t.pathname;
                                else {
                                    for (var d = (t.pathname || "").split("/"); d.length && !(t.host = d.shift()););
                                    t.host || (t.host = ""), t.hostname || (t.hostname = ""), "" !== d[0] && d.unshift(""), d.length < 2 && d.unshift(""), r.pathname = d.join("/")
                                }
                                if (r.search = t.search, r.query = t.query, r.host = t.host || "", r.auth = t.auth, r.hostname = t.hostname || t.host, r.port = t.port, r.pathname || r.search) {
                                    var p = r.pathname || "",
                                        f = r.search || "";
                                    r.path = p + f
                                }
                                return r.slashes = r.slashes || t.slashes, r.href = r.format(), r
                            }
                            var m = r.pathname && "/" === r.pathname.charAt(0),
                                g = t.host || t.pathname && "/" === t.pathname.charAt(0),
                                v = g || m || r.host && t.pathname,
                                y = v,
                                _ = r.pathname && r.pathname.split("/") || [],
                                x = (d = t.pathname && t.pathname.split("/") || [], r.protocol && !Kt[r.protocol]);
                            if (x && (r.hostname = "", r.port = null, r.host && ("" === _[0] ? _[0] = r.host : _.unshift(r.host)), r.host = "", t.protocol && (t.hostname = null, t.port = null, t.host && ("" === d[0] ? d[0] = t.host : d.unshift(t.host)), t.host = null), v = v && ("" === d[0] || "" === _[0])), g) r.host = t.host || "" === t.host ? t.host : r.host, r.hostname = t.hostname || "" === t.hostname ? t.hostname : r.hostname, r.search = t.search, r.query = t.query, _ = d;
                            else if (d.length) _ || (_ = []), _.pop(), _ = _.concat(d), r.search = t.search, r.query = t.query;
                            else if (!It(t.search)) {
                                if (x) r.hostname = r.host = _.shift(), (S = !!(r.host && r.host.indexOf("@") > 0) && r.host.split("@")) && (r.auth = S.shift(), r.host = r.hostname = S.shift());
                                return r.search = t.search, r.query = t.query, St(r.pathname) && St(r.search) || (r.path = (r.pathname ? r.pathname : "") + (r.search ? r.search : "")), r.href = r.format(), r
                            }
                            if (!_.length) return r.pathname = null, r.search ? r.path = "/" + r.search : r.path = null, r.href = r.format(), r;
                            for (var b = _.slice(-1)[0], E = (r.host || t.host || _.length > 1) && ("." === b || ".." === b) || "" === b, T = 0, w = _.length; w >= 0; w--) "." === (b = _[w]) ? _.splice(w, 1) : ".." === b ? (_.splice(w, 1), T++) : T && (_.splice(w, 1), T--);
                            if (!v && !y)
                                for (; T--; T) _.unshift("..");
                            !v || "" === _[0] || _[0] && "/" === _[0].charAt(0) || _.unshift(""), E && "/" !== _.join("/").substr(-1) && _.push("");
                            var S, I = "" === _[0] || _[0] && "/" === _[0].charAt(0);
                            x && (r.hostname = r.host = I ? "" : _.length ? _.shift() : "", (S = !!(r.host && r.host.indexOf("@") > 0) && r.host.split("@")) && (r.auth = S.shift(), r.host = r.hostname = S.shift()));
                            return (v = v || r.host && _.length) && !I && _.unshift(""), _.length ? r.pathname = _.join("/") : (r.pathname = null, r.path = null), St(r.pathname) && St(r.search) || (r.path = (r.pathname ? r.pathname : "") + (r.search ? r.search : "")), r.auth = t.auth || r.auth, r.slashes = r.slashes || t.slashes, r.href = r.format(), r
                        }, Bt.prototype.parseHost = function () {
                            var t = this.host,
                                e = kt.exec(t);
                            e && (":" !== (e = e[0]) && (this.port = e.substr(1)), t = t.substr(0, t.length - e.length)), t && (this.hostname = t)
                        };
                        var $t, Jt, Qt, te, ee, re, ie, ne, oe, se, ae, he, ue, le, ce = {
                            parse: Mt,
                            resolve: Rt,
                            resolveObject: Nt,
                            format: Lt,
                            Url: Ft
                        };
                        /*!
                         * @pixi/constants - v5.2.1
                         * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                         *
                         * @pixi/constants is licensed under the MIT License.
                         * http://www.opensource.org/licenses/mit-license
                         */
                        ($t = e.ENV || (e.ENV = {}))[$t.WEBGL_LEGACY = 0] = "WEBGL_LEGACY", $t[$t.WEBGL = 1] = "WEBGL", $t[$t.WEBGL2 = 2] = "WEBGL2", (Jt = e.RENDERER_TYPE || (e.RENDERER_TYPE = {}))[Jt.UNKNOWN = 0] = "UNKNOWN", Jt[Jt.WEBGL = 1] = "WEBGL", Jt[Jt.CANVAS = 2] = "CANVAS", (Qt = e.BLEND_MODES || (e.BLEND_MODES = {}))[Qt.NORMAL = 0] = "NORMAL", Qt[Qt.ADD = 1] = "ADD", Qt[Qt.MULTIPLY = 2] = "MULTIPLY", Qt[Qt.SCREEN = 3] = "SCREEN", Qt[Qt.OVERLAY = 4] = "OVERLAY", Qt[Qt.DARKEN = 5] = "DARKEN", Qt[Qt.LIGHTEN = 6] = "LIGHTEN", Qt[Qt.COLOR_DODGE = 7] = "COLOR_DODGE", Qt[Qt.COLOR_BURN = 8] = "COLOR_BURN", Qt[Qt.HARD_LIGHT = 9] = "HARD_LIGHT", Qt[Qt.SOFT_LIGHT = 10] = "SOFT_LIGHT", Qt[Qt.DIFFERENCE = 11] = "DIFFERENCE", Qt[Qt.EXCLUSION = 12] = "EXCLUSION", Qt[Qt.HUE = 13] = "HUE", Qt[Qt.SATURATION = 14] = "SATURATION", Qt[Qt.COLOR = 15] = "COLOR", Qt[Qt.LUMINOSITY = 16] = "LUMINOSITY", Qt[Qt.NORMAL_NPM = 17] = "NORMAL_NPM", Qt[Qt.ADD_NPM = 18] = "ADD_NPM", Qt[Qt.SCREEN_NPM = 19] = "SCREEN_NPM", Qt[Qt.NONE = 20] = "NONE", Qt[Qt.SRC_OVER = 0] = "SRC_OVER", Qt[Qt.SRC_IN = 21] = "SRC_IN", Qt[Qt.SRC_OUT = 22] = "SRC_OUT", Qt[Qt.SRC_ATOP = 23] = "SRC_ATOP", Qt[Qt.DST_OVER = 24] = "DST_OVER", Qt[Qt.DST_IN = 25] = "DST_IN", Qt[Qt.DST_OUT = 26] = "DST_OUT", Qt[Qt.DST_ATOP = 27] = "DST_ATOP", Qt[Qt.ERASE = 26] = "ERASE", Qt[Qt.SUBTRACT = 28] = "SUBTRACT", Qt[Qt.XOR = 29] = "XOR", (te = e.DRAW_MODES || (e.DRAW_MODES = {}))[te.POINTS = 0] = "POINTS", te[te.LINES = 1] = "LINES", te[te.LINE_LOOP = 2] = "LINE_LOOP", te[te.LINE_STRIP = 3] = "LINE_STRIP", te[te.TRIANGLES = 4] = "TRIANGLES", te[te.TRIANGLE_STRIP = 5] = "TRIANGLE_STRIP", te[te.TRIANGLE_FAN = 6] = "TRIANGLE_FAN", (ee = e.FORMATS || (e.FORMATS = {}))[ee.RGBA = 6408] = "RGBA", ee[ee.RGB = 6407] = "RGB", ee[ee.ALPHA = 6406] = "ALPHA", ee[ee.LUMINANCE = 6409] = "LUMINANCE", ee[ee.LUMINANCE_ALPHA = 6410] = "LUMINANCE_ALPHA", ee[ee.DEPTH_COMPONENT = 6402] = "DEPTH_COMPONENT", ee[ee.DEPTH_STENCIL = 34041] = "DEPTH_STENCIL", (re = e.TARGETS || (e.TARGETS = {}))[re.TEXTURE_2D = 3553] = "TEXTURE_2D", re[re.TEXTURE_CUBE_MAP = 34067] = "TEXTURE_CUBE_MAP", re[re.TEXTURE_2D_ARRAY = 35866] = "TEXTURE_2D_ARRAY", re[re.TEXTURE_CUBE_MAP_POSITIVE_X = 34069] = "TEXTURE_CUBE_MAP_POSITIVE_X", re[re.TEXTURE_CUBE_MAP_NEGATIVE_X = 34070] = "TEXTURE_CUBE_MAP_NEGATIVE_X", re[re.TEXTURE_CUBE_MAP_POSITIVE_Y = 34071] = "TEXTURE_CUBE_MAP_POSITIVE_Y", re[re.TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072] = "TEXTURE_CUBE_MAP_NEGATIVE_Y", re[re.TEXTURE_CUBE_MAP_POSITIVE_Z = 34073] = "TEXTURE_CUBE_MAP_POSITIVE_Z", re[re.TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074] = "TEXTURE_CUBE_MAP_NEGATIVE_Z", (ie = e.TYPES || (e.TYPES = {}))[ie.UNSIGNED_BYTE = 5121] = "UNSIGNED_BYTE", ie[ie.UNSIGNED_SHORT = 5123] = "UNSIGNED_SHORT", ie[ie.UNSIGNED_SHORT_5_6_5 = 33635] = "UNSIGNED_SHORT_5_6_5", ie[ie.UNSIGNED_SHORT_4_4_4_4 = 32819] = "UNSIGNED_SHORT_4_4_4_4", ie[ie.UNSIGNED_SHORT_5_5_5_1 = 32820] = "UNSIGNED_SHORT_5_5_5_1", ie[ie.FLOAT = 5126] = "FLOAT", ie[ie.HALF_FLOAT = 36193] = "HALF_FLOAT", (ne = e.SCALE_MODES || (e.SCALE_MODES = {}))[ne.NEAREST = 0] = "NEAREST", ne[ne.LINEAR = 1] = "LINEAR", (oe = e.WRAP_MODES || (e.WRAP_MODES = {}))[oe.CLAMP = 33071] = "CLAMP", oe[oe.REPEAT = 10497] = "REPEAT", oe[oe.MIRRORED_REPEAT = 33648] = "MIRRORED_REPEAT", (se = e.MIPMAP_MODES || (e.MIPMAP_MODES = {}))[se.OFF = 0] = "OFF", se[se.POW2 = 1] = "POW2", se[se.ON = 2] = "ON", (ae = e.ALPHA_MODES || (e.ALPHA_MODES = {}))[ae.NPM = 0] = "NPM", ae[ae.UNPACK = 1] = "UNPACK", ae[ae.PMA = 2] = "PMA", ae[ae.NO_PREMULTIPLIED_ALPHA = 0] = "NO_PREMULTIPLIED_ALPHA", ae[ae.PREMULTIPLY_ON_UPLOAD = 1] = "PREMULTIPLY_ON_UPLOAD", ae[ae.PREMULTIPLY_ALPHA = 2] = "PREMULTIPLY_ALPHA", (he = e.GC_MODES || (e.GC_MODES = {}))[he.AUTO = 0] = "AUTO", he[he.MANUAL = 1] = "MANUAL", (ue = e.PRECISION || (e.PRECISION = {})).LOW = "lowp", ue.MEDIUM = "mediump", ue.HIGH = "highp", (le = e.MASK_TYPES || (e.MASK_TYPES = {}))[le.NONE = 0] = "NONE", le[le.SCISSOR = 1] = "SCISSOR", le[le.STENCIL = 2] = "STENCIL", le[le.SPRITE = 3] = "SPRITE",
                            /*!
                             * @pixi/utils - v5.2.1
                             * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                             *
                             * @pixi/utils is licensed under the MIT License.
                             * http://www.opensource.org/licenses/mit-license
                             */
                            V.RETINA_PREFIX = /@([0-9\.]+)x/, V.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT = !0;
                        var de = !1;

                        function pe(t) {
                            var e;
                            if (!de) {
                                if (m.userAgent.toLowerCase().indexOf("chrome") > -1) {
                                    var r = ["\n %c %c %c PixiJS 5.2.1 - ✰ " + t + " ✰  %c  %c  http://www.pixijs.com/  %c %c ♥%c♥%c♥ \n\n", "background: #ff66a5; padding:5px 0;", "background: #ff66a5; padding:5px 0;", "color: #ff66a5; background: #030307; padding:5px 0;", "background: #ff66a5; padding:5px 0;", "background: #ffc3dc; padding:5px 0;", "background: #ff66a5; padding:5px 0;", "color: #ff2424; background: #fff; padding:5px 0;", "color: #ff2424; background: #fff; padding:5px 0;", "color: #ff2424; background: #fff; padding:5px 0;"];
                                    (e = o.a.console).log.apply(e, r)
                                } else o.a.console && o.a.console.log("PixiJS 5.2.1 - " + t + " - http://www.pixijs.com/");
                                de = !0
                            }
                        }

                        function fe() {
                            return !0, !0
                        }

                        function me(t, e) {
                            return (e = e || [])[0] = (t >> 16 & 255) / 255, e[1] = (t >> 8 & 255) / 255, e[2] = (255 & t) / 255, e
                        }

                        function ge(t) {
                            var e = t.toString(16);
                            return "#" + (e = "000000".substr(0, 6 - e.length) + e)
                        }

                        function ve(t) {
                            return "string" == typeof t && "#" === t[0] && (t = t.substr(1)), parseInt(t, 16)
                        }
                        var ye = function () {
                            for (var t = [], r = [], i = 0; i < 32; i++) t[i] = i, r[i] = i;
                            t[e.BLEND_MODES.NORMAL_NPM] = e.BLEND_MODES.NORMAL, t[e.BLEND_MODES.ADD_NPM] = e.BLEND_MODES.ADD, t[e.BLEND_MODES.SCREEN_NPM] = e.BLEND_MODES.SCREEN, r[e.BLEND_MODES.NORMAL] = e.BLEND_MODES.NORMAL_NPM, r[e.BLEND_MODES.ADD] = e.BLEND_MODES.ADD_NPM, r[e.BLEND_MODES.SCREEN] = e.BLEND_MODES.SCREEN_NPM;
                            var n = [];
                            return n.push(r), n.push(t), n
                        }();

                        function _e(t, e) {
                            return ye[e ? 1 : 0][t]
                        }

                        function xe(t, e, r, i) {
                            return r = r || new Float32Array(4), i || void 0 === i ? (r[0] = t[0] * e, r[1] = t[1] * e, r[2] = t[2] * e) : (r[0] = t[0], r[1] = t[1], r[2] = t[2]), r[3] = e, r
                        }

                        function be(t, e) {
                            if (1 === e) return (255 * e << 24) + t;
                            if (0 === e) return 0;
                            var r = t >> 16 & 255,
                                i = t >> 8 & 255,
                                n = 255 & t;
                            return (255 * e << 24) + ((r = r * e + .5 | 0) << 16) + ((i = i * e + .5 | 0) << 8) + (n = n * e + .5 | 0)
                        }

                        function Ee(t, e, r, i) {
                            return (r = r || new Float32Array(4))[0] = (t >> 16 & 255) / 255, r[1] = (t >> 8 & 255) / 255, r[2] = (255 & t) / 255, (i || void 0 === i) && (r[0] *= e, r[1] *= e, r[2] *= e), r[3] = e, r
                        }

                        function Te(t, e) {
                            void 0 === e && (e = null);
                            var r = 6 * t;
                            if ((e = e || new Uint16Array(r)).length !== r) throw new Error("Out buffer length is incorrect, got " + e.length + " and expected " + r);
                            for (var i = 0, n = 0; i < r; i += 6, n += 4) e[i + 0] = n + 0, e[i + 1] = n + 1, e[i + 2] = n + 2, e[i + 3] = n + 0, e[i + 4] = n + 2, e[i + 5] = n + 3;
                            return e
                        }

                        function we(t) {
                            if (4 === t.BYTES_PER_ELEMENT) return t instanceof Float32Array ? "Float32Array" : t instanceof Uint32Array ? "Uint32Array" : "Int32Array";
                            if (2 === t.BYTES_PER_ELEMENT) {
                                if (t instanceof Uint16Array) return "Uint16Array"
                            } else if (1 === t.BYTES_PER_ELEMENT && t instanceof Uint8Array) return "Uint8Array";
                            return null
                        }
                        var Se = {
                            Float32Array: Float32Array,
                            Uint32Array: Uint32Array,
                            Int32Array: Int32Array,
                            Uint8Array: Uint8Array
                        };

                        function Ie(t) {
                            return t += 0 === t ? 1 : 0, --t, t |= t >>> 1, t |= t >>> 2, t |= t >>> 4, t |= t >>> 8, (t |= t >>> 16) + 1
                        }

                        function Pe(t) {
                            return !(t & t - 1 || !t)
                        }

                        function Ae(t) {
                            var e = (t > 65535 ? 1 : 0) << 4,
                                r = ((t >>>= e) > 255 ? 1 : 0) << 3;
                            return e |= r, e |= r = ((t >>>= r) > 15 ? 1 : 0) << 2, (e |= r = ((t >>>= r) > 3 ? 1 : 0) << 1) | (t >>>= r) >> 1
                        }

                        function Oe(t, e, r) {
                            var i, n = t.length;
                            if (!(e >= n || 0 === r)) {
                                var o = n - (r = e + r > n ? n - e : r);
                                for (i = e; i < o; ++i) t[i] = t[i + r];
                                t.length = o
                            }
                        }

                        function De(t) {
                            return 0 === t ? 0 : t < 0 ? -1 : 1
                        }
                        var Ce = 0;

                        function Me() {
                            return ++Ce
                        }
                        var Re = {};

                        function Ne(t, e, r) {
                            if (void 0 === r && (r = 3), !Re[e]) {
                                var i = (new Error).stack;
                                void 0 === i ? console.warn("PixiJS Deprecation Warning: ", e + "\nDeprecated since v" + t) : (i = i.split("\n").splice(r).join("\n"), console.groupCollapsed ? (console.groupCollapsed("%cPixiJS Deprecation Warning: %c%s", "color:#614108;background:#fffbe6", "font-weight:normal;color:#614108;background:#fffbe6", e + "\nDeprecated since v" + t), console.warn(i), console.groupEnd()) : (console.warn("PixiJS Deprecation Warning: ", e + "\nDeprecated since v" + t), console.warn(i))), Re[e] = !0
                            }
                        }
                        var Le = {},
                            Fe = Object.create(null),
                            Be = Object.create(null);
                        var Ue = function () {
                            function t(t, e, r) {
                                this.canvas = v.createElement("canvas"), this.context = this.canvas.getContext("2d"), this.resolution = r || V.RESOLUTION, this.resize(t, e)
                            }
                            return t.prototype.clear = function () {
                                this.context.setTransform(1, 0, 0, 1, 0, 0), this.context.clearRect(0, 0, this.canvas.width, this.canvas.height)
                            }, t.prototype.resize = function (t, e) {
                                this.canvas.width = t * this.resolution, this.canvas.height = e * this.resolution
                            }, t.prototype.destroy = function () {
                                this.context = null, this.canvas = null
                            }, Object.defineProperty(t.prototype, "width", {
                                get: function () {
                                    return this.canvas.width
                                },
                                set: function (t) {
                                    this.canvas.width = t
                                },
                                enumerable: !0,
                                configurable: !0
                            }), Object.defineProperty(t.prototype, "height", {
                                get: function () {
                                    return this.canvas.height
                                },
                                set: function (t) {
                                    this.canvas.height = t
                                },
                                enumerable: !0,
                                configurable: !0
                            }), t
                        }();

                        function ke(t) {
                            var e, r, i, n = t.width,
                                o = t.height,
                                s = t.getContext("2d"),
                                a = s.getImageData(0, 0, n, o).data,
                                h = a.length,
                                u = {
                                    top: null,
                                    left: null,
                                    right: null,
                                    bottom: null
                                },
                                l = null;
                            for (e = 0; e < h; e += 4) 0 !== a[e + 3] && (r = e / 4 % n, i = ~~(e / 4 / n), null === u.top && (u.top = i), (null === u.left || r < u.left) && (u.left = r), (null === u.right || u.right < r) && (u.right = r + 1), (null === u.bottom || u.bottom < i) && (u.bottom = i));
                            return null !== u.top && (n = u.right - u.left, o = u.bottom - u.top + 1, l = s.getImageData(u.left, u.top, n, o)), {
                                height: o,
                                width: n,
                                data: l
                            }
                        }
                        var Xe, je = /^\s*data:(?:([\w-]+)\/([\w+.-]+))?(?:;charset=([\w-]+))?(?:;(base64))?,(.*)/i;

                        function He(t, e) {
                            if (void 0 === e && (e = o.a.location), 0 === t.indexOf("data:")) return "";
                            e = e || o.a.location, Xe || (Xe = v.createElement("a")), Xe.href = t;
                            var r = Mt(Xe.href),
                                i = !r.port && "" === e.port || r.port === e.port;
                            return r.hostname === e.hostname && i && r.protocol === e.protocol ? "" : "anonymous"
                        }

                        function Ge(t, e) {
                            var r = V.RETINA_PREFIX.exec(t);
                            return r ? parseFloat(r[1]) : void 0 !== e ? e : 1
                        }
                        var Ye, ze = {
                                BaseTextureCache: Be,
                                CanvasRenderTarget: Ue,
                                DATA_URI: je,
                                ProgramCache: Le,
                                TextureCache: Fe,
                                clearTextureCache: function () {
                                    var t;
                                    for (t in Fe) delete Fe[t];
                                    for (t in Be) delete Be[t]
                                },
                                correctBlendMode: _e,
                                createIndicesForQuads: Te,
                                decomposeDataUri: function (t) {
                                    var e = je.exec(t);
                                    if (e) return {
                                        mediaType: e[1] ? e[1].toLowerCase() : void 0,
                                        subType: e[2] ? e[2].toLowerCase() : void 0,
                                        charset: e[3] ? e[3].toLowerCase() : void 0,
                                        encoding: e[4] ? e[4].toLowerCase() : void 0,
                                        data: e[5]
                                    }
                                },
                                deprecation: Ne,
                                destroyTextureCache: function () {
                                    var t;
                                    for (t in Fe) Fe[t].destroy();
                                    for (t in Be) Be[t].destroy()
                                },
                                determineCrossOrigin: He,
                                getBufferType: we,
                                getResolutionOfUrl: Ge,
                                hex2rgb: me,
                                hex2string: ge,
                                interleaveTypedArrays: function (t, e) {
                                    for (var r = 0, i = 0, n = {}, o = 0; o < t.length; o++) i += e[o], r += t[o].length;
                                    var s = new ArrayBuffer(4 * r),
                                        a = null,
                                        h = 0;
                                    for (o = 0; o < t.length; o++) {
                                        var u = e[o],
                                            l = t[o],
                                            c = we(l);
                                        n[c] || (n[c] = new Se[c](s)), a = n[c];
                                        for (var d = 0; d < l.length; d++) {
                                            a[(d / u | 0) * i + h + d % u] = l[d]
                                        }
                                        h += u
                                    }
                                    return new Float32Array(s)
                                },
                                isPow2: Pe,
                                isWebGLSupported: fe,
                                log2: Ae,
                                nextPow2: Ie,
                                premultiplyBlendMode: ye,
                                premultiplyRgba: xe,
                                premultiplyTint: be,
                                premultiplyTintToRgba: Ee,
                                removeItems: Oe,
                                rgb2hex: function (t) {
                                    return (255 * t[0] << 16) + (255 * t[1] << 8) + (255 * t[2] | 0)
                                },
                                sayHello: pe,
                                sign: De,
                                skipHello: function () {
                                    de = !0
                                },
                                string2hex: ve,
                                trimCanvas: ke,
                                uid: Me,
                                isMobile: z,
                                EventEmitter: W,
                                earcut: q,
                                url: ce
                            },
                            Ve = function () {
                                function t(t, e) {
                                    void 0 === t && (t = 0), void 0 === e && (e = 0), this.x = t, this.y = e
                                }
                                return t.prototype.clone = function () {
                                    return new t(this.x, this.y)
                                }, t.prototype.copyFrom = function (t) {
                                    return this.set(t.x, t.y), this
                                }, t.prototype.copyTo = function (t) {
                                    return t.set(this.x, this.y), t
                                }, t.prototype.equals = function (t) {
                                    return t.x === this.x && t.y === this.y
                                }, t.prototype.set = function (t, e) {
                                    return void 0 === t && (t = 0), void 0 === e && (e = t), this.x = t, this.y = e, this
                                }, t
                            }(),
                            We = function () {
                                function t(t, e, r, i) {
                                    void 0 === r && (r = 0), void 0 === i && (i = 0), this._x = r, this._y = i, this.cb = t, this.scope = e
                                }
                                return t.prototype.clone = function (e, r) {
                                    return void 0 === e && (e = this.cb), void 0 === r && (r = this.scope), new t(e, r, this._x, this._y)
                                }, t.prototype.set = function (t, e) {
                                    return void 0 === t && (t = 0), void 0 === e && (e = t), this._x === t && this._y === e || (this._x = t, this._y = e, this.cb.call(this.scope)), this
                                }, t.prototype.copyFrom = function (t) {
                                    return this._x === t.x && this._y === t.y || (this._x = t.x, this._y = t.y, this.cb.call(this.scope)), this
                                }, t.prototype.copyTo = function (t) {
                                    return t.set(this._x, this._y), t
                                }, t.prototype.equals = function (t) {
                                    return t.x === this._x && t.y === this._y
                                }, Object.defineProperty(t.prototype, "x", {
                                    get: function () {
                                        return this._x
                                    },
                                    set: function (t) {
                                        this._x !== t && (this._x = t, this.cb.call(this.scope))
                                    },
                                    enumerable: !0,
                                    configurable: !0
                                }), Object.defineProperty(t.prototype, "y", {
                                    get: function () {
                                        return this._y
                                    },
                                    set: function (t) {
                                        this._y !== t && (this._y = t, this.cb.call(this.scope))
                                    },
                                    enumerable: !0,
                                    configurable: !0
                                }), t
                            }(),
                            qe = 2 * Math.PI,
                            Ke = 180 / Math.PI,
                            Ze = Math.PI / 180;
                        /*!
                         * @pixi/math - v5.2.1
                         * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                         *
                         * @pixi/math is licensed under the MIT License.
                         * http://www.opensource.org/licenses/mit-license
                         */
                        (Ye = e.SHAPES || (e.SHAPES = {}))[Ye.POLY = 0] = "POLY", Ye[Ye.RECT = 1] = "RECT", Ye[Ye.CIRC = 2] = "CIRC", Ye[Ye.ELIP = 3] = "ELIP", Ye[Ye.RREC = 4] = "RREC";
                        var $e = function () {
                                function t(t, e, r, i, n, o) {
                                    void 0 === t && (t = 1), void 0 === e && (e = 0), void 0 === r && (r = 0), void 0 === i && (i = 1), void 0 === n && (n = 0), void 0 === o && (o = 0), this.array = null, this.a = t, this.b = e, this.c = r, this.d = i, this.tx = n, this.ty = o
                                }
                                return t.prototype.fromArray = function (t) {
                                    this.a = t[0], this.b = t[1], this.c = t[3], this.d = t[4], this.tx = t[2], this.ty = t[5]
                                }, t.prototype.set = function (t, e, r, i, n, o) {
                                    return this.a = t, this.b = e, this.c = r, this.d = i, this.tx = n, this.ty = o, this
                                }, t.prototype.toArray = function (t, e) {
                                    this.array || (this.array = new Float32Array(9));
                                    var r = e || this.array;
                                    return t ? (r[0] = this.a, r[1] = this.b, r[2] = 0, r[3] = this.c, r[4] = this.d, r[5] = 0, r[6] = this.tx, r[7] = this.ty, r[8] = 1) : (r[0] = this.a, r[1] = this.c, r[2] = this.tx, r[3] = this.b, r[4] = this.d, r[5] = this.ty, r[6] = 0, r[7] = 0, r[8] = 1), r
                                }, t.prototype.apply = function (t, e) {
                                    e = e || new Ve;
                                    var r = t.x,
                                        i = t.y;
                                    return e.x = this.a * r + this.c * i + this.tx, e.y = this.b * r + this.d * i + this.ty, e
                                }, t.prototype.applyInverse = function (t, e) {
                                    e = e || new Ve;
                                    var r = 1 / (this.a * this.d + this.c * -this.b),
                                        i = t.x,
                                        n = t.y;
                                    return e.x = this.d * r * i + -this.c * r * n + (this.ty * this.c - this.tx * this.d) * r, e.y = this.a * r * n + -this.b * r * i + (-this.ty * this.a + this.tx * this.b) * r, e
                                }, t.prototype.translate = function (t, e) {
                                    return this.tx += t, this.ty += e, this
                                }, t.prototype.scale = function (t, e) {
                                    return this.a *= t, this.d *= e, this.c *= t, this.b *= e, this.tx *= t, this.ty *= e, this
                                }, t.prototype.rotate = function (t) {
                                    var e = Math.cos(t),
                                        r = Math.sin(t),
                                        i = this.a,
                                        n = this.c,
                                        o = this.tx;
                                    return this.a = i * e - this.b * r, this.b = i * r + this.b * e, this.c = n * e - this.d * r, this.d = n * r + this.d * e, this.tx = o * e - this.ty * r, this.ty = o * r + this.ty * e, this
                                }, t.prototype.append = function (t) {
                                    var e = this.a,
                                        r = this.b,
                                        i = this.c,
                                        n = this.d;
                                    return this.a = t.a * e + t.b * i, this.b = t.a * r + t.b * n, this.c = t.c * e + t.d * i, this.d = t.c * r + t.d * n, this.tx = t.tx * e + t.ty * i + this.tx, this.ty = t.tx * r + t.ty * n + this.ty, this
                                }, t.prototype.setTransform = function (t, e, r, i, n, o, s, a, h) {
                                    return this.a = Math.cos(s + h) * n, this.b = Math.sin(s + h) * n, this.c = -Math.sin(s - a) * o, this.d = Math.cos(s - a) * o, this.tx = t - (r * this.a + i * this.c), this.ty = e - (r * this.b + i * this.d), this
                                }, t.prototype.prepend = function (t) {
                                    var e = this.tx;
                                    if (1 !== t.a || 0 !== t.b || 0 !== t.c || 1 !== t.d) {
                                        var r = this.a,
                                            i = this.c;
                                        this.a = r * t.a + this.b * t.c, this.b = r * t.b + this.b * t.d, this.c = i * t.a + this.d * t.c, this.d = i * t.b + this.d * t.d
                                    }
                                    return this.tx = e * t.a + this.ty * t.c + t.tx, this.ty = e * t.b + this.ty * t.d + t.ty, this
                                }, t.prototype.decompose = function (t) {
                                    var e = this.a,
                                        r = this.b,
                                        i = this.c,
                                        n = this.d,
                                        o = -Math.atan2(-i, n),
                                        s = Math.atan2(r, e),
                                        a = Math.abs(o + s);
                                    return a < 1e-5 || Math.abs(qe - a) < 1e-5 ? (t.rotation = s, t.skew.x = t.skew.y = 0) : (t.rotation = 0, t.skew.x = o, t.skew.y = s), t.scale.x = Math.sqrt(e * e + r * r), t.scale.y = Math.sqrt(i * i + n * n), t.position.x = this.tx, t.position.y = this.ty, t
                                }, t.prototype.invert = function () {
                                    var t = this.a,
                                        e = this.b,
                                        r = this.c,
                                        i = this.d,
                                        n = this.tx,
                                        o = t * i - e * r;
                                    return this.a = i / o, this.b = -e / o, this.c = -r / o, this.d = t / o, this.tx = (r * this.ty - i * n) / o, this.ty = -(t * this.ty - e * n) / o, this
                                }, t.prototype.identity = function () {
                                    return this.a = 1, this.b = 0, this.c = 0, this.d = 1, this.tx = 0, this.ty = 0, this
                                }, t.prototype.clone = function () {
                                    var e = new t;
                                    return e.a = this.a, e.b = this.b, e.c = this.c, e.d = this.d, e.tx = this.tx, e.ty = this.ty, e
                                }, t.prototype.copyTo = function (t) {
                                    return t.a = this.a, t.b = this.b, t.c = this.c, t.d = this.d, t.tx = this.tx, t.ty = this.ty, t
                                }, t.prototype.copyFrom = function (t) {
                                    return this.a = t.a, this.b = t.b, this.c = t.c, this.d = t.d, this.tx = t.tx, this.ty = t.ty, this
                                }, Object.defineProperty(t, "IDENTITY", {
                                    get: function () {
                                        return new t
                                    },
                                    enumerable: !0,
                                    configurable: !0
                                }), Object.defineProperty(t, "TEMP_MATRIX", {
                                    get: function () {
                                        return new t
                                    },
                                    enumerable: !0,
                                    configurable: !0
                                }), t
                            }(),
                            Je = [1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1, 0, 1],
                            Qe = [0, 1, 1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1],
                            tr = [0, -1, -1, -1, 0, 1, 1, 1, 0, 1, 1, 1, 0, -1, -1, -1],
                            er = [1, 1, 0, -1, -1, -1, 0, 1, -1, -1, 0, 1, 1, 1, 0, -1],
                            rr = [],
                            ir = [],
                            nr = Math.sign;
                        ! function () {
                            for (var t = 0; t < 16; t++) {
                                var e = [];
                                rr.push(e);
                                for (var r = 0; r < 16; r++)
                                    for (var i = nr(Je[t] * Je[r] + tr[t] * Qe[r]), n = nr(Qe[t] * Je[r] + er[t] * Qe[r]), o = nr(Je[t] * tr[r] + tr[t] * er[r]), s = nr(Qe[t] * tr[r] + er[t] * er[r]), a = 0; a < 16; a++)
                                        if (Je[a] === i && Qe[a] === n && tr[a] === o && er[a] === s) {
                                            e.push(a);
                                            break
                                        }
                            }
                            for (t = 0; t < 16; t++) {
                                var h = new $e;
                                h.set(Je[t], Qe[t], tr[t], er[t], 0, 0), ir.push(h)
                            }
                        }();
                        var or = {
                                E: 0,
                                SE: 1,
                                S: 2,
                                SW: 3,
                                W: 4,
                                NW: 5,
                                N: 6,
                                NE: 7,
                                MIRROR_VERTICAL: 8,
                                MAIN_DIAGONAL: 10,
                                MIRROR_HORIZONTAL: 12,
                                REVERSE_DIAGONAL: 14,
                                uX: function (t) {
                                    return Je[t]
                                },
                                uY: function (t) {
                                    return Qe[t]
                                },
                                vX: function (t) {
                                    return tr[t]
                                },
                                vY: function (t) {
                                    return er[t]
                                },
                                inv: function (t) {
                                    return 8 & t ? 15 & t : 7 & -t
                                },
                                add: function (t, e) {
                                    return rr[t][e]
                                },
                                sub: function (t, e) {
                                    return rr[t][or.inv(e)]
                                },
                                rotate180: function (t) {
                                    return 4 ^ t
                                },
                                isVertical: function (t) {
                                    return 2 == (3 & t)
                                },
                                byDirection: function (t, e) {
                                    return 2 * Math.abs(t) <= Math.abs(e) ? e >= 0 ? or.S : or.N : 2 * Math.abs(e) <= Math.abs(t) ? t > 0 ? or.E : or.W : e > 0 ? t > 0 ? or.SE : or.SW : t > 0 ? or.NE : or.NW
                                },
                                matrixAppendRotationInv: function (t, e, r, i) {
                                    void 0 === r && (r = 0), void 0 === i && (i = 0);
                                    var n = ir[or.inv(e)];
                                    n.tx = r, n.ty = i, t.append(n)
                                }
                            },
                            sr = function () {
                                function t() {
                                    this.worldTransform = new $e, this.localTransform = new $e, this.position = new We(this.onChange, this, 0, 0), this.scale = new We(this.onChange, this, 1, 1), this.pivot = new We(this.onChange, this, 0, 0), this.skew = new We(this.updateSkew, this, 0, 0), this._rotation = 0, this._cx = 1, this._sx = 0, this._cy = 0, this._sy = 1, this._localID = 0, this._currentLocalID = 0, this._worldID = 0, this._parentID = 0
                                }
                                return t.prototype.onChange = function () {
                                    this._localID++
                                }, t.prototype.updateSkew = function () {
                                    this._cx = Math.cos(this._rotation + this.skew.y), this._sx = Math.sin(this._rotation + this.skew.y), this._cy = -Math.sin(this._rotation - this.skew.x), this._sy = Math.cos(this._rotation - this.skew.x), this._localID++
                                }, t.prototype.updateLocalTransform = function () {
                                    var t = this.localTransform;
                                    this._localID !== this._currentLocalID && (t.a = this._cx * this.scale.x, t.b = this._sx * this.scale.x, t.c = this._cy * this.scale.y, t.d = this._sy * this.scale.y, t.tx = this.position.x - (this.pivot.x * t.a + this.pivot.y * t.c), t.ty = this.position.y - (this.pivot.x * t.b + this.pivot.y * t.d), this._currentLocalID = this._localID, this._parentID = -1)
                                }, t.prototype.updateTransform = function (t) {
                                    var e = this.localTransform;
                                    if (this._localID !== this._currentLocalID && (e.a = this._cx * this.scale.x, e.b = this._sx * this.scale.x, e.c = this._cy * this.scale.y, e.d = this._sy * this.scale.y, e.tx = this.position.x - (this.pivot.x * e.a + this.pivot.y * e.c), e.ty = this.position.y - (this.pivot.x * e.b + this.pivot.y * e.d), this._currentLocalID = this._localID, this._parentID = -1), this._parentID !== t._worldID) {
                                        var r = t.worldTransform,
                                            i = this.worldTransform;
                                        i.a = e.a * r.a + e.b * r.c, i.b = e.a * r.b + e.b * r.d, i.c = e.c * r.a + e.d * r.c, i.d = e.c * r.b + e.d * r.d, i.tx = e.tx * r.a + e.ty * r.c + r.tx, i.ty = e.tx * r.b + e.ty * r.d + r.ty, this._parentID = t._worldID, this._worldID++
                                    }
                                }, t.prototype.setFromMatrix = function (t) {
                                    t.decompose(this), this._localID++
                                }, Object.defineProperty(t.prototype, "rotation", {
                                    get: function () {
                                        return this._rotation
                                    },
                                    set: function (t) {
                                        this._rotation !== t && (this._rotation = t, this.updateSkew())
                                    },
                                    enumerable: !0,
                                    configurable: !0
                                }), t.IDENTITY = new t, t
                            }(),
                            ar = function () {
                                function t(t, r, i, n) {
                                    void 0 === t && (t = 0), void 0 === r && (r = 0), void 0 === i && (i = 0), void 0 === n && (n = 0), this.x = Number(t), this.y = Number(r), this.width = Number(i), this.height = Number(n), this.type = e.SHAPES.RECT
                                }
                                return Object.defineProperty(t.prototype, "left", {
                                    get: function () {
                                        return this.x
                                    },
                                    enumerable: !0,
                                    configurable: !0
                                }), Object.defineProperty(t.prototype, "right", {
                                    get: function () {
                                        return this.x + this.width
                                    },
                                    enumerable: !0,
                                    configurable: !0
                                }), Object.defineProperty(t.prototype, "top", {
                                    get: function () {
                                        return this.y
                                    },
                                    enumerable: !0,
                                    configurable: !0
                                }), Object.defineProperty(t.prototype, "bottom", {
                                    get: function () {
                                        return this.y + this.height
                                    },
                                    enumerable: !0,
                                    configurable: !0
                                }), Object.defineProperty(t, "EMPTY", {
                                    get: function () {
                                        return new t(0, 0, 0, 0)
                                    },
                                    enumerable: !0,
                                    configurable: !0
                                }), t.prototype.clone = function () {
                                    return new t(this.x, this.y, this.width, this.height)
                                }, t.prototype.copyFrom = function (t) {
                                    return this.x = t.x, this.y = t.y, this.width = t.width, this.height = t.height, this
                                }, t.prototype.copyTo = function (t) {
                                    return t.x = this.x, t.y = this.y, t.width = this.width, t.height = this.height, t
                                }, t.prototype.contains = function (t, e) {
                                    return !(this.width <= 0 || this.height <= 0) && (t >= this.x && t < this.x + this.width && e >= this.y && e < this.y + this.height)
                                }, t.prototype.pad = function (t, e) {
                                    return void 0 === t && (t = 0), void 0 === e && (e = t), this.x -= t, this.y -= e, this.width += 2 * t, this.height += 2 * e, this
                                }, t.prototype.fit = function (t) {
                                    var e = Math.max(this.x, t.x),
                                        r = Math.min(this.x + this.width, t.x + t.width),
                                        i = Math.max(this.y, t.y),
                                        n = Math.min(this.y + this.height, t.y + t.height);
                                    return this.x = e, this.width = Math.max(r - e, 0), this.y = i, this.height = Math.max(n - i, 0), this
                                }, t.prototype.ceil = function (t, e) {
                                    void 0 === t && (t = 1), void 0 === e && (e = .001);
                                    var r = Math.ceil((this.x + this.width - e) * t) / t,
                                        i = Math.ceil((this.y + this.height - e) * t) / t;
                                    return this.x = Math.floor((this.x + e) * t) / t, this.y = Math.floor((this.y + e) * t) / t, this.width = r - this.x, this.height = i - this.y, this
                                }, t.prototype.enlarge = function (t) {
                                    var e = Math.min(this.x, t.x),
                                        r = Math.max(this.x + this.width, t.x + t.width),
                                        i = Math.min(this.y, t.y),
                                        n = Math.max(this.y + this.height, t.y + t.height);
                                    return this.x = e, this.width = r - e, this.y = i, this.height = n - i, this
                                }, t
                            }(),
                            hr = function () {
                                function t(t, r, i) {
                                    void 0 === t && (t = 0), void 0 === r && (r = 0), void 0 === i && (i = 0), this.x = t, this.y = r, this.radius = i, this.type = e.SHAPES.CIRC
                                }
                                return t.prototype.clone = function () {
                                    return new t(this.x, this.y, this.radius)
                                }, t.prototype.contains = function (t, e) {
                                    if (this.radius <= 0) return !1;
                                    var r = this.radius * this.radius,
                                        i = this.x - t,
                                        n = this.y - e;
                                    return (i *= i) + (n *= n) <= r
                                }, t.prototype.getBounds = function () {
                                    return new ar(this.x - this.radius, this.y - this.radius, 2 * this.radius, 2 * this.radius)
                                }, t
                            }(),
                            ur = function () {
                                function t(t, r, i, n) {
                                    void 0 === t && (t = 0), void 0 === r && (r = 0), void 0 === i && (i = 0), void 0 === n && (n = 0), this.x = t, this.y = r, this.width = i, this.height = n, this.type = e.SHAPES.ELIP
                                }
                                return t.prototype.clone = function () {
                                    return new t(this.x, this.y, this.width, this.height)
                                }, t.prototype.contains = function (t, e) {
                                    if (this.width <= 0 || this.height <= 0) return !1;
                                    var r = (t - this.x) / this.width,
                                        i = (e - this.y) / this.height;
                                    return (r *= r) + (i *= i) <= 1
                                }, t.prototype.getBounds = function () {
                                    return new ar(this.x - this.width, this.y - this.height, this.width, this.height)
                                }, t
                            }(),
                            lr = function () {
                                function t() {
                                    for (var t = arguments, r = [], i = 0; i < arguments.length; i++) r[i] = t[i];
                                    if (Array.isArray(r[0]) && (r = r[0]), r[0] instanceof Ve) {
                                        for (var n = [], o = 0, s = (r = r).length; o < s; o++) n.push(r[o].x, r[o].y);
                                        r = n
                                    }
                                    this.points = r, this.type = e.SHAPES.POLY, this.closeStroke = !0
                                }
                                return t.prototype.clone = function () {
                                    var e = new t(this.points.slice());
                                    return e.closeStroke = this.closeStroke, e
                                }, t.prototype.contains = function (t, e) {
                                    for (var r = !1, i = this.points.length / 2, n = 0, o = i - 1; n < i; o = n++) {
                                        var s = this.points[2 * n],
                                            a = this.points[2 * n + 1],
                                            h = this.points[2 * o],
                                            u = this.points[2 * o + 1];
                                        a > e != u > e && t < (e - a) / (u - a) * (h - s) + s && (r = !r)
                                    }
                                    return r
                                }, t
                            }(),
                            cr = function () {
                                function t(t, r, i, n, o) {
                                    void 0 === t && (t = 0), void 0 === r && (r = 0), void 0 === i && (i = 0), void 0 === n && (n = 0), void 0 === o && (o = 20), this.x = t, this.y = r, this.width = i, this.height = n, this.radius = o, this.type = e.SHAPES.RREC
                                }
                                return t.prototype.clone = function () {
                                    return new t(this.x, this.y, this.width, this.height, this.radius)
                                }, t.prototype.contains = function (t, e) {
                                    if (this.width <= 0 || this.height <= 0) return !1;
                                    if (t >= this.x && t <= this.x + this.width && e >= this.y && e <= this.y + this.height) {
                                        if (e >= this.y + this.radius && e <= this.y + this.height - this.radius || t >= this.x + this.radius && t <= this.x + this.width - this.radius) return !0;
                                        var r = t - (this.x + this.radius),
                                            i = e - (this.y + this.radius),
                                            n = this.radius * this.radius;
                                        if (r * r + i * i <= n) return !0;
                                        if ((r = t - (this.x + this.width - this.radius)) * r + i * i <= n) return !0;
                                        if (r * r + (i = e - (this.y + this.height - this.radius)) * i <= n) return !0;
                                        if ((r = t - (this.x + this.radius)) * r + i * i <= n) return !0
                                    }
                                    return !1
                                }, t
                            }();
                        /*!
                         * @pixi/display - v5.2.1
                         * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                         *
                         * @pixi/display is licensed under the MIT License.
                         * http://www.opensource.org/licenses/mit-license
                         */
                        V.SORTABLE_CHILDREN = !1;
                        var dr = function () {
                            this.minX = 1 / 0, this.minY = 1 / 0, this.maxX = -1 / 0, this.maxY = -1 / 0, this.rect = null
                        };
                        dr.prototype.isEmpty = function () {
                            return this.minX > this.maxX || this.minY > this.maxY
                        }, dr.prototype.clear = function () {
                            this.minX = 1 / 0, this.minY = 1 / 0, this.maxX = -1 / 0, this.maxY = -1 / 0
                        }, dr.prototype.getRectangle = function (t) {
                            return this.minX > this.maxX || this.minY > this.maxY ? ar.EMPTY : ((t = t || new ar(0, 0, 1, 1)).x = this.minX, t.y = this.minY, t.width = this.maxX - this.minX, t.height = this.maxY - this.minY, t)
                        }, dr.prototype.addPoint = function (t) {
                            this.minX = Math.min(this.minX, t.x), this.maxX = Math.max(this.maxX, t.x), this.minY = Math.min(this.minY, t.y), this.maxY = Math.max(this.maxY, t.y)
                        }, dr.prototype.addQuad = function (t) {
                            var e = this.minX,
                                r = this.minY,
                                i = this.maxX,
                                n = this.maxY,
                                o = t[0],
                                s = t[1];
                            e = o < e ? o : e, r = s < r ? s : r, i = o > i ? o : i, n = s > n ? s : n, e = (o = t[2]) < e ? o : e, r = (s = t[3]) < r ? s : r, i = o > i ? o : i, n = s > n ? s : n, e = (o = t[4]) < e ? o : e, r = (s = t[5]) < r ? s : r, i = o > i ? o : i, n = s > n ? s : n, e = (o = t[6]) < e ? o : e, r = (s = t[7]) < r ? s : r, i = o > i ? o : i, n = s > n ? s : n, this.minX = e, this.minY = r, this.maxX = i, this.maxY = n
                        }, dr.prototype.addFrame = function (t, e, r, i, n) {
                            this.addFrameMatrix(t.worldTransform, e, r, i, n)
                        }, dr.prototype.addFrameMatrix = function (t, e, r, i, n) {
                            var o = t.a,
                                s = t.b,
                                a = t.c,
                                h = t.d,
                                u = t.tx,
                                l = t.ty,
                                c = this.minX,
                                d = this.minY,
                                p = this.maxX,
                                f = this.maxY,
                                m = o * e + a * r + u,
                                g = s * e + h * r + l;
                            c = m < c ? m : c, d = g < d ? g : d, p = m > p ? m : p, f = g > f ? g : f, c = (m = o * i + a * r + u) < c ? m : c, d = (g = s * i + h * r + l) < d ? g : d, p = m > p ? m : p, f = g > f ? g : f, c = (m = o * e + a * n + u) < c ? m : c, d = (g = s * e + h * n + l) < d ? g : d, p = m > p ? m : p, f = g > f ? g : f, c = (m = o * i + a * n + u) < c ? m : c, d = (g = s * i + h * n + l) < d ? g : d, p = m > p ? m : p, f = g > f ? g : f, this.minX = c, this.minY = d, this.maxX = p, this.maxY = f
                        }, dr.prototype.addVertexData = function (t, e, r) {
                            for (var i = this.minX, n = this.minY, o = this.maxX, s = this.maxY, a = e; a < r; a += 2) {
                                var h = t[a],
                                    u = t[a + 1];
                                i = h < i ? h : i, n = u < n ? u : n, o = h > o ? h : o, s = u > s ? u : s
                            }
                            this.minX = i, this.minY = n, this.maxX = o, this.maxY = s
                        }, dr.prototype.addVertices = function (t, e, r, i) {
                            this.addVerticesMatrix(t.worldTransform, e, r, i)
                        }, dr.prototype.addVerticesMatrix = function (t, e, r, i, n, o) {
                            var s = t.a,
                                a = t.b,
                                h = t.c,
                                u = t.d,
                                l = t.tx,
                                c = t.ty;
                            n = n || 0, o = o || 0;
                            for (var d = this.minX, p = this.minY, f = this.maxX, m = this.maxY, g = r; g < i; g += 2) {
                                var v = e[g],
                                    y = e[g + 1],
                                    _ = s * v + h * y + l,
                                    x = u * y + a * v + c;
                                d = Math.min(d, _ - n), f = Math.max(f, _ + n), p = Math.min(p, x - o), m = Math.max(m, x + o)
                            }
                            this.minX = d, this.minY = p, this.maxX = f, this.maxY = m
                        }, dr.prototype.addBounds = function (t) {
                            var e = this.minX,
                                r = this.minY,
                                i = this.maxX,
                                n = this.maxY;
                            this.minX = t.minX < e ? t.minX : e, this.minY = t.minY < r ? t.minY : r, this.maxX = t.maxX > i ? t.maxX : i, this.maxY = t.maxY > n ? t.maxY : n
                        }, dr.prototype.addBoundsMask = function (t, e) {
                            var r = t.minX > e.minX ? t.minX : e.minX,
                                i = t.minY > e.minY ? t.minY : e.minY,
                                n = t.maxX < e.maxX ? t.maxX : e.maxX,
                                o = t.maxY < e.maxY ? t.maxY : e.maxY;
                            if (r <= n && i <= o) {
                                var s = this.minX,
                                    a = this.minY,
                                    h = this.maxX,
                                    u = this.maxY;
                                this.minX = r < s ? r : s, this.minY = i < a ? i : a, this.maxX = n > h ? n : h, this.maxY = o > u ? o : u
                            }
                        }, dr.prototype.addBoundsMatrix = function (t, e) {
                            this.addFrameMatrix(e, t.minX, t.minY, t.maxX, t.maxY)
                        }, dr.prototype.addBoundsArea = function (t, e) {
                            var r = t.minX > e.x ? t.minX : e.x,
                                i = t.minY > e.y ? t.minY : e.y,
                                n = t.maxX < e.x + e.width ? t.maxX : e.x + e.width,
                                o = t.maxY < e.y + e.height ? t.maxY : e.y + e.height;
                            if (r <= n && i <= o) {
                                var s = this.minX,
                                    a = this.minY,
                                    h = this.maxX,
                                    u = this.maxY;
                                this.minX = r < s ? r : s, this.minY = i < a ? i : a, this.maxX = n > h ? n : h, this.maxY = o > u ? o : u
                            }
                        }, dr.prototype.pad = function (t, e) {
                            t = t || 0, e = e || (0 !== e ? t : 0), this.isEmpty() || (this.minX -= t, this.maxX += t, this.minY -= e, this.maxY += e)
                        }, dr.prototype.addFramePad = function (t, e, r, i, n, o) {
                            t -= n, e -= o, r += n, i += o, this.minX = this.minX < t ? this.minX : t, this.maxX = this.maxX > r ? this.maxX : r, this.minY = this.minY < e ? this.minY : e, this.maxY = this.maxY > i ? this.maxY : i
                        };
                        var pr = function (t) {
                            function e() {
                                t.call(this), this.tempDisplayObjectParent = null, this.transform = new sr, this.alpha = 1, this.visible = !0, this.renderable = !0, this.parent = null, this.worldAlpha = 1, this._lastSortedIndex = 0, this._zIndex = 0, this.filterArea = null, this.filters = null, this._enabledFilters = null, this._bounds = new dr, this._boundsID = 0, this._lastBoundsID = -1, this._boundsRect = null, this._localBoundsRect = null, this._mask = null, this._destroyed = !1, this.isSprite = !1, this.isMask = !1
                            }
                            t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
                            var r = {
                                _tempDisplayObjectParent: {
                                    configurable: !0
                                },
                                x: {
                                    configurable: !0
                                },
                                y: {
                                    configurable: !0
                                },
                                worldTransform: {
                                    configurable: !0
                                },
                                localTransform: {
                                    configurable: !0
                                },
                                position: {
                                    configurable: !0
                                },
                                scale: {
                                    configurable: !0
                                },
                                pivot: {
                                    configurable: !0
                                },
                                skew: {
                                    configurable: !0
                                },
                                rotation: {
                                    configurable: !0
                                },
                                angle: {
                                    configurable: !0
                                },
                                zIndex: {
                                    configurable: !0
                                },
                                worldVisible: {
                                    configurable: !0
                                },
                                mask: {
                                    configurable: !0
                                }
                            };
                            return e.mixin = function (t) {
                                for (var r = Object.keys(t), i = 0; i < r.length; ++i) {
                                    var n = r[i];
                                    Object.defineProperty(e.prototype, n, Object.getOwnPropertyDescriptor(t, n))
                                }
                            }, r._tempDisplayObjectParent.get = function () {
                                return null === this.tempDisplayObjectParent && (this.tempDisplayObjectParent = new e), this.tempDisplayObjectParent
                            }, e.prototype.updateTransform = function () {
                                this._boundsID++, this.transform.updateTransform(this.parent.transform), this.worldAlpha = this.alpha * this.parent.worldAlpha
                            }, e.prototype.calculateBounds = function () {}, e.prototype._recursivePostUpdateTransform = function () {
                                this.parent ? (this.parent._recursivePostUpdateTransform(), this.transform.updateTransform(this.parent.transform)) : this.transform.updateTransform(this._tempDisplayObjectParent.transform)
                            }, e.prototype.getBounds = function (t, e) {
                                return t || (this.parent ? (this._recursivePostUpdateTransform(), this.updateTransform()) : (this.parent = this._tempDisplayObjectParent, this.updateTransform(), this.parent = null)), this._boundsID !== this._lastBoundsID && (this.calculateBounds(), this._lastBoundsID = this._boundsID), e || (this._boundsRect || (this._boundsRect = new ar), e = this._boundsRect), this._bounds.getRectangle(e)
                            }, e.prototype.getLocalBounds = function (t) {
                                var e = this.transform,
                                    r = this.parent;
                                this.parent = null, this.transform = this._tempDisplayObjectParent.transform, t || (this._localBoundsRect || (this._localBoundsRect = new ar), t = this._localBoundsRect);
                                var i = this.getBounds(!1, t);
                                return this.parent = r, this.transform = e, i
                            }, e.prototype.toGlobal = function (t, e, r) {
                                return void 0 === r && (r = !1), r || (this._recursivePostUpdateTransform(), this.parent ? this.displayObjectUpdateTransform() : (this.parent = this._tempDisplayObjectParent, this.displayObjectUpdateTransform(), this.parent = null)), this.worldTransform.apply(t, e)
                            }, e.prototype.toLocal = function (t, e, r, i) {
                                return e && (t = e.toGlobal(t, r, i)), i || (this._recursivePostUpdateTransform(), this.parent ? this.displayObjectUpdateTransform() : (this.parent = this._tempDisplayObjectParent, this.displayObjectUpdateTransform(), this.parent = null)), this.worldTransform.applyInverse(t, r)
                            }, e.prototype.render = function (t) {}, e.prototype.setParent = function (t) {
                                if (!t || !t.addChild) throw new Error("setParent: Argument must be a Container");
                                return t.addChild(this), t
                            }, e.prototype.setTransform = function (t, e, r, i, n, o, s, a, h) {
                                return void 0 === t && (t = 0), void 0 === e && (e = 0), void 0 === r && (r = 1), void 0 === i && (i = 1), void 0 === n && (n = 0), void 0 === o && (o = 0), void 0 === s && (s = 0), void 0 === a && (a = 0), void 0 === h && (h = 0), this.position.x = t, this.position.y = e, this.scale.x = r || 1, this.scale.y = i || 1, this.rotation = n, this.skew.x = o, this.skew.y = s, this.pivot.x = a, this.pivot.y = h, this
                            }, e.prototype.destroy = function () {
                                this.parent && this.parent.removeChild(this), this.removeAllListeners(), this.transform = null, this.parent = null, this._bounds = null, this._currentBounds = null, this._mask = null, this.filters = null, this.filterArea = null, this.hitArea = null, this.interactive = !1, this.interactiveChildren = !1, this._destroyed = !0
                            }, r.x.get = function () {
                                return this.position.x
                            }, r.x.set = function (t) {
                                this.transform.position.x = t
                            }, r.y.get = function () {
                                return this.position.y
                            }, r.y.set = function (t) {
                                this.transform.position.y = t
                            }, r.worldTransform.get = function () {
                                return this.transform.worldTransform
                            }, r.localTransform.get = function () {
                                return this.transform.localTransform
                            }, r.position.get = function () {
                                return this.transform.position
                            }, r.position.set = function (t) {
                                this.transform.position.copyFrom(t)
                            }, r.scale.get = function () {
                                return this.transform.scale
                            }, r.scale.set = function (t) {
                                this.transform.scale.copyFrom(t)
                            }, r.pivot.get = function () {
                                return this.transform.pivot
                            }, r.pivot.set = function (t) {
                                this.transform.pivot.copyFrom(t)
                            }, r.skew.get = function () {
                                return this.transform.skew
                            }, r.skew.set = function (t) {
                                this.transform.skew.copyFrom(t)
                            }, r.rotation.get = function () {
                                return this.transform.rotation
                            }, r.rotation.set = function (t) {
                                this.transform.rotation = t
                            }, r.angle.get = function () {
                                return this.transform.rotation * Ke
                            }, r.angle.set = function (t) {
                                this.transform.rotation = t * Ze
                            }, r.zIndex.get = function () {
                                return this._zIndex
                            }, r.zIndex.set = function (t) {
                                this._zIndex = t, this.parent && (this.parent.sortDirty = !0)
                            }, r.worldVisible.get = function () {
                                var t = this;
                                do {
                                    if (!t.visible) return !1;
                                    t = t.parent
                                } while (t);
                                return !0
                            }, r.mask.get = function () {
                                return this._mask
                            }, r.mask.set = function (t) {
                                if (this._mask) {
                                    var e = this._mask.maskObject || this._mask;
                                    e.renderable = !0, e.isMask = !1
                                }
                                if (this._mask = t, this._mask) {
                                    var r = this._mask.maskObject || this._mask;
                                    r.renderable = !1, r.isMask = !0
                                }
                            }, Object.defineProperties(e.prototype, r), e
                        }(W);

                        function fr(t, e) {
                            return t.zIndex === e.zIndex ? t._lastSortedIndex - e._lastSortedIndex : t.zIndex - e.zIndex
                        }
                        pr.prototype.displayObjectUpdateTransform = pr.prototype.updateTransform;
                        var mr = function (t) {
                            function e() {
                                t.call(this), this.children = [], this.sortableChildren = V.SORTABLE_CHILDREN, this.sortDirty = !1
                            }
                            t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
                            var r = {
                                width: {
                                    configurable: !0
                                },
                                height: {
                                    configurable: !0
                                }
                            };
                            return e.prototype.onChildrenChange = function () {}, e.prototype.addChild = function (t) {
                                var e = arguments,
                                    r = arguments.length;
                                if (r > 1)
                                    for (var i = 0; i < r; i++) this.addChild(e[i]);
                                else t.parent && t.parent.removeChild(t), t.parent = this, this.sortDirty = !0, t.transform._parentID = -1, this.children.push(t), this._boundsID++, this.onChildrenChange(this.children.length - 1), this.emit("childAdded", t, this, this.children.length - 1), t.emit("added", this);
                                return t
                            }, e.prototype.addChildAt = function (t, e) {
                                if (e < 0 || e > this.children.length) throw new Error(t + "addChildAt: The index " + e + " supplied is out of bounds " + this.children.length);
                                return t.parent && t.parent.removeChild(t), t.parent = this, this.sortDirty = !0, t.transform._parentID = -1, this.children.splice(e, 0, t), this._boundsID++, this.onChildrenChange(e), t.emit("added", this), this.emit("childAdded", t, this, e), t
                            }, e.prototype.swapChildren = function (t, e) {
                                if (t !== e) {
                                    var r = this.getChildIndex(t),
                                        i = this.getChildIndex(e);
                                    this.children[r] = e, this.children[i] = t, this.onChildrenChange(r < i ? r : i)
                                }
                            }, e.prototype.getChildIndex = function (t) {
                                var e = this.children.indexOf(t);
                                if (-1 === e) throw new Error("The supplied DisplayObject must be a child of the caller");
                                return e
                            }, e.prototype.setChildIndex = function (t, e) {
                                if (e < 0 || e >= this.children.length) throw new Error("The index " + e + " supplied is out of bounds " + this.children.length);
                                var r = this.getChildIndex(t);
                                Oe(this.children, r, 1), this.children.splice(e, 0, t), this.onChildrenChange(e)
                            }, e.prototype.getChildAt = function (t) {
                                if (t < 0 || t >= this.children.length) throw new Error("getChildAt: Index (" + t + ") does not exist.");
                                return this.children[t]
                            }, e.prototype.removeChild = function (t) {
                                var e = arguments,
                                    r = arguments.length;
                                if (r > 1)
                                    for (var i = 0; i < r; i++) this.removeChild(e[i]);
                                else {
                                    var n = this.children.indexOf(t);
                                    if (-1 === n) return null;
                                    t.parent = null, t.transform._parentID = -1, Oe(this.children, n, 1), this._boundsID++, this.onChildrenChange(n), t.emit("removed", this), this.emit("childRemoved", t, this, n)
                                }
                                return t
                            }, e.prototype.removeChildAt = function (t) {
                                var e = this.getChildAt(t);
                                return e.parent = null, e.transform._parentID = -1, Oe(this.children, t, 1), this._boundsID++, this.onChildrenChange(t), e.emit("removed", this), this.emit("childRemoved", e, this, t), e
                            }, e.prototype.removeChildren = function (t, e) {
                                void 0 === t && (t = 0);
                                var r, i = t,
                                    n = "number" == typeof e ? e : this.children.length,
                                    o = n - i;
                                if (o > 0 && o <= n) {
                                    r = this.children.splice(i, o);
                                    for (var s = 0; s < r.length; ++s) r[s].parent = null, r[s].transform && (r[s].transform._parentID = -1);
                                    this._boundsID++, this.onChildrenChange(t);
                                    for (var a = 0; a < r.length; ++a) r[a].emit("removed", this), this.emit("childRemoved", r[a], this, a);
                                    return r
                                }
                                if (0 === o && 0 === this.children.length) return [];
                                throw new RangeError("removeChildren: numeric values are outside the acceptable range.")
                            }, e.prototype.sortChildren = function () {
                                for (var t = !1, e = 0, r = this.children.length; e < r; ++e) {
                                    var i = this.children[e];
                                    i._lastSortedIndex = e, t || 0 === i.zIndex || (t = !0)
                                }
                                t && this.children.length > 1 && this.children.sort(fr), this.sortDirty = !1
                            }, e.prototype.updateTransform = function () {
                                this.sortableChildren && this.sortDirty && this.sortChildren(), this._boundsID++, this.transform.updateTransform(this.parent.transform), this.worldAlpha = this.alpha * this.parent.worldAlpha;
                                for (var t = 0, e = this.children.length; t < e; ++t) {
                                    var r = this.children[t];
                                    r.visible && r.updateTransform()
                                }
                            }, e.prototype.calculateBounds = function () {
                                this._bounds.clear(), this._calculateBounds();
                                for (var t = 0; t < this.children.length; t++) {
                                    var e = this.children[t];
                                    if (e.visible && e.renderable)
                                        if (e.calculateBounds(), e._mask) {
                                            var r = e._mask.maskObject || e._mask;
                                            r.calculateBounds(), this._bounds.addBoundsMask(e._bounds, r._bounds)
                                        } else e.filterArea ? this._bounds.addBoundsArea(e._bounds, e.filterArea) : this._bounds.addBounds(e._bounds)
                                }
                                this._lastBoundsID = this._boundsID
                            }, e.prototype._calculateBounds = function () {}, e.prototype.render = function (t) {
                                if (this.visible && !(this.worldAlpha <= 0) && this.renderable)
                                    if (this._mask || this.filters && this.filters.length) this.renderAdvanced(t);
                                    else {
                                        this._render(t);
                                        for (var e = 0, r = this.children.length; e < r; ++e) this.children[e].render(t)
                                    }
                            }, e.prototype.renderAdvanced = function (t) {
                                t.batch.flush();
                                var e = this.filters,
                                    r = this._mask;
                                if (e) {
                                    this._enabledFilters || (this._enabledFilters = []), this._enabledFilters.length = 0;
                                    for (var i = 0; i < e.length; i++) e[i].enabled && this._enabledFilters.push(e[i]);
                                    this._enabledFilters.length && t.filter.push(this, this._enabledFilters)
                                }
                                r && t.mask.push(this, this._mask), this._render(t);
                                for (var n = 0, o = this.children.length; n < o; n++) this.children[n].render(t);
                                t.batch.flush(), r && t.mask.pop(this, this._mask), e && this._enabledFilters && this._enabledFilters.length && t.filter.pop()
                            }, e.prototype._render = function (t) {}, e.prototype.destroy = function (e) {
                                t.prototype.destroy.call(this), this.sortDirty = !1;
                                var r = "boolean" == typeof e ? e : e && e.children,
                                    i = this.removeChildren(0, this.children.length);
                                if (r)
                                    for (var n = 0; n < i.length; ++n) i[n].destroy(e)
                            }, r.width.get = function () {
                                return this.scale.x * this.getLocalBounds().width
                            }, r.width.set = function (t) {
                                var e = this.getLocalBounds().width;
                                this.scale.x = 0 !== e ? t / e : 1, this._width = t
                            }, r.height.get = function () {
                                return this.scale.y * this.getLocalBounds().height
                            }, r.height.set = function (t) {
                                var e = this.getLocalBounds().height;
                                this.scale.y = 0 !== e ? t / e : 1, this._height = t
                            }, Object.defineProperties(e.prototype, r), e
                        }(pr);
                        mr.prototype.containerUpdateTransform = mr.prototype.updateTransform;
                        /*!
                         * @pixi/accessibility - v5.2.1
                         * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                         *
                         * @pixi/accessibility is licensed under the MIT License.
                         * http://www.opensource.org/licenses/mit-license
                         */
                        var gr = {
                            accessible: !1,
                            accessibleTitle: null,
                            accessibleHint: null,
                            tabIndex: 0,
                            _accessibleActive: !1,
                            _accessibleDiv: !1,
                            accessibleType: "button",
                            accessiblePointerEvents: "auto",
                            accessibleChildren: !0
                        };
                        pr.mixin(gr);
                        var vr = function (t) {
                            this._hookDiv = null, (z.tablet || z.phone) && this.createTouchHook();
                            var e = v.createElement("div");
                            e.style.width = "100px", e.style.height = "100px", e.style.position = "absolute", e.style.top = "0px", e.style.left = "0px", e.style.zIndex = 2, this.div = e, this.pool = [], this.renderId = 0, this.debug = !1, this.renderer = t, this.children = [], this._onKeyDown = this._onKeyDown.bind(this), this._onMouseMove = this._onMouseMove.bind(this), this.isActive = !1, this.isMobileAccessibility = !1, o.a.addEventListener("keydown", this._onKeyDown, !1)
                        };
                        vr.prototype.createTouchHook = function () {
                            var t = this,
                                e = v.createElement("button");
                            e.style.width = "1px", e.style.height = "1px", e.style.position = "absolute", e.style.top = "-1000px", e.style.left = "-1000px", e.style.zIndex = 2, e.style.backgroundColor = "#FF0000", e.title = "HOOK DIV", e.addEventListener("focus", (function () {
                                t.isMobileAccessibility = !0, t.activate(), t.destroyTouchHook()
                            })), v.body.appendChild(e), this._hookDiv = e
                        }, vr.prototype.destroyTouchHook = function () {
                            this._hookDiv && (v.body.removeChild(this._hookDiv), this._hookDiv = null)
                        }, vr.prototype.activate = function () {
                            this.isActive || (this.isActive = !0, o.a.document.addEventListener("mousemove", this._onMouseMove, !0), o.a.removeEventListener("keydown", this._onKeyDown, !1), this.renderer.on("postrender", this.update, this), this.renderer.view.parentNode && this.renderer.view.parentNode.appendChild(this.div))
                        }, vr.prototype.deactivate = function () {
                            this.isActive && !this.isMobileAccessibility && (this.isActive = !1, o.a.document.removeEventListener("mousemove", this._onMouseMove, !0), o.a.addEventListener("keydown", this._onKeyDown, !1), this.renderer.off("postrender", this.update), this.div.parentNode && this.div.parentNode.removeChild(this.div))
                        }, vr.prototype.updateAccessibleObjects = function (t) {
                            if (t.visible && t.accessibleChildren) {
                                t.accessible && t.interactive && (t._accessibleActive || this.addChild(t), t.renderId = this.renderId);
                                for (var e = t.children, r = 0; r < e.length; r++) this.updateAccessibleObjects(e[r])
                            }
                        }, vr.prototype.update = function () {
                            if (this.renderer.renderingToScreen) {
                                this.updateAccessibleObjects(this.renderer._lastObjectRendered);
                                var t = this.renderer.view.getBoundingClientRect(),
                                    e = t.width / this.renderer.width,
                                    r = t.height / this.renderer.height,
                                    i = this.div;
                                i.style.left = t.left + "px", i.style.top = t.top + "px", i.style.width = this.renderer.width + "px", i.style.height = this.renderer.height + "px";
                                for (var n = 0; n < this.children.length; n++) {
                                    var o = this.children[n];
                                    if (o.renderId !== this.renderId) o._accessibleActive = !1, Oe(this.children, n, 1), this.div.removeChild(o._accessibleDiv), this.pool.push(o._accessibleDiv), o._accessibleDiv = null, n--, 0 === this.children.length && this.deactivate();
                                    else {
                                        i = o._accessibleDiv;
                                        var s = o.hitArea,
                                            a = o.worldTransform;
                                        o.hitArea ? (i.style.left = (a.tx + s.x * a.a) * e + "px", i.style.top = (a.ty + s.y * a.d) * r + "px", i.style.width = s.width * a.a * e + "px", i.style.height = s.height * a.d * r + "px") : (s = o.getBounds(), this.capHitArea(s), i.style.left = s.x * e + "px", i.style.top = s.y * r + "px", i.style.width = s.width * e + "px", i.style.height = s.height * r + "px", i.title !== o.accessibleTitle && null !== o.accessibleTitle && (i.title = o.accessibleTitle), i.getAttribute("aria-label") !== o.accessibleHint && null !== o.accessibleHint && i.setAttribute("aria-label", o.accessibleHint)), o.accessibleTitle === i.title && o.tabIndex === i.tabIndex || (i.title = o.accessibleTitle, i.tabIndex = o.tabIndex, this.debug && this.updateDebugHTML(i))
                                    }
                                }
                                this.renderId++
                            }
                        }, vr.prototype.updateDebugHTML = function (t) {
                            t.innerHTML = "type: " + t.type + "</br> title : " + t.title + "</br> tabIndex: " + t.tabIndex
                        }, vr.prototype.capHitArea = function (t) {
                            t.x < 0 && (t.width += t.x, t.x = 0), t.y < 0 && (t.height += t.y, t.y = 0), t.x + t.width > this.renderer.width && (t.width = this.renderer.width - t.x), t.y + t.height > this.renderer.height && (t.height = this.renderer.height - t.y)
                        }, vr.prototype.addChild = function (t) {
                            var e = this.pool.pop();
                            e || ((e = v.createElement("button")).style.width = "100px", e.style.height = "100px", e.style.backgroundColor = this.debug ? "rgba(255,255,255,0.5)" : "transparent", e.style.position = "absolute", e.style.zIndex = 2, e.style.borderStyle = "none", m.userAgent.toLowerCase().indexOf("chrome") > -1 ? e.setAttribute("aria-live", "off") : e.setAttribute("aria-live", "polite"), m.userAgent.match(/rv:.*Gecko\//) ? e.setAttribute("aria-relevant", "additions") : e.setAttribute("aria-relevant", "text"), e.addEventListener("click", this._onClick.bind(this)), e.addEventListener("focus", this._onFocus.bind(this)), e.addEventListener("focusout", this._onFocusOut.bind(this))), e.style.pointerEvents = t.accessiblePointerEvents, e.type = t.accessibleType, t.accessibleTitle && null !== t.accessibleTitle ? e.title = t.accessibleTitle : t.accessibleHint && null !== t.accessibleHint || (e.title = "displayObject " + t.tabIndex), t.accessibleHint && null !== t.accessibleHint && e.setAttribute("aria-label", t.accessibleHint), this.debug && this.updateDebugHTML(e), t._accessibleActive = !0, t._accessibleDiv = e, e.displayObject = t, this.children.push(t), this.div.appendChild(t._accessibleDiv), t._accessibleDiv.tabIndex = t.tabIndex
                        }, vr.prototype._onClick = function (t) {
                            var e = this.renderer.plugins.interaction;
                            e.dispatchEvent(t.target.displayObject, "click", e.eventData), e.dispatchEvent(t.target.displayObject, "pointertap", e.eventData), e.dispatchEvent(t.target.displayObject, "tap", e.eventData)
                        }, vr.prototype._onFocus = function (t) {
                            t.target.getAttribute("aria-live", "off") || t.target.setAttribute("aria-live", "assertive");
                            var e = this.renderer.plugins.interaction;
                            e.dispatchEvent(t.target.displayObject, "mouseover", e.eventData)
                        }, vr.prototype._onFocusOut = function (t) {
                            t.target.getAttribute("aria-live", "off") || t.target.setAttribute("aria-live", "polite");
                            var e = this.renderer.plugins.interaction;
                            e.dispatchEvent(t.target.displayObject, "mouseout", e.eventData)
                        }, vr.prototype._onKeyDown = function (t) {
                            9 === t.keyCode && this.activate()
                        }, vr.prototype._onMouseMove = function (t) {
                            0 === t.movementX && 0 === t.movementY || this.deactivate()
                        }, vr.prototype.destroy = function () {
                            this.destroyTouchHook(), this.div = null;
                            for (var t = 0; t < this.children.length; t++) this.children[t].div = null;
                            o.a.document.removeEventListener("mousemove", this._onMouseMove, !0), o.a.removeEventListener("keydown", this._onKeyDown), this.pool = null, this.children = null, this.renderer = null
                        };
                        var yr, _r = {
                            AccessibilityManager: vr,
                            accessibleTarget: gr
                        };
                        /*!
                         * @pixi/ticker - v5.2.1
                         * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                         *
                         * @pixi/ticker is licensed under the MIT License.
                         * http://www.opensource.org/licenses/mit-license
                         */
                        V.TARGET_FPMS = .06, (yr = e.UPDATE_PRIORITY || (e.UPDATE_PRIORITY = {}))[yr.INTERACTION = 50] = "INTERACTION", yr[yr.HIGH = 25] = "HIGH", yr[yr.NORMAL = 0] = "NORMAL", yr[yr.LOW = -25] = "LOW", yr[yr.UTILITY = -50] = "UTILITY";
                        var xr = function () {
                                function t(t, e, r, i) {
                                    void 0 === e && (e = null), void 0 === r && (r = 0), void 0 === i && (i = !1), this.fn = t, this.context = e, this.priority = r, this.once = i, this.next = null, this.previous = null, this._destroyed = !1
                                }
                                return t.prototype.match = function (t, e) {
                                    return void 0 === e && (e = null), this.fn === t && this.context === e
                                }, t.prototype.emit = function (t) {
                                    this.fn && (this.context ? this.fn.call(this.context, t) : this.fn(t));
                                    var e = this.next;
                                    return this.once && this.destroy(!0), this._destroyed && (this.next = null), e
                                }, t.prototype.connect = function (t) {
                                    this.previous = t, t.next && (t.next.previous = this), this.next = t.next, t.next = this
                                }, t.prototype.destroy = function (t) {
                                    void 0 === t && (t = !1), this._destroyed = !0, this.fn = null, this.context = null, this.previous && (this.previous.next = this.next), this.next && (this.next.previous = this.previous);
                                    var e = this.next;
                                    return this.next = t ? null : e, this.previous = null, e
                                }, t
                            }(),
                            br = function () {
                                function t() {
                                    var t = this;
                                    this._head = new xr(null, null, 1 / 0), this._requestId = null, this._maxElapsedMS = 100, this._minElapsedMS = 0, this.autoStart = !1, this.deltaTime = 1, this.deltaMS = 1 / V.TARGET_FPMS, this.elapsedMS = 1 / V.TARGET_FPMS, this.lastTime = -1, this.speed = 1, this.started = !1, this._protected = !1, this._lastFrame = -1, this._tick = function (e) {
                                        t._requestId = null, t.started && (t.update(e), t.started && null === t._requestId && t._head.next && (t._requestId = d(t._tick)))
                                    }
                                }
                                return t.prototype._requestIfNeeded = function () {
                                    null === this._requestId && this._head.next && (this.lastTime = performance.now(), this._lastFrame = this.lastTime, this._requestId = d(this._tick))
                                }, t.prototype._cancelIfNeeded = function () {
                                    null !== this._requestId && (cancelAnimationFrame(this._requestId), this._requestId = null)
                                }, t.prototype._startIfPossible = function () {
                                    this.started ? this._requestIfNeeded() : this.autoStart && this.start()
                                }, t.prototype.add = function (t, r, i) {
                                    return void 0 === i && (i = e.UPDATE_PRIORITY.NORMAL), this._addListener(new xr(t, r, i))
                                }, t.prototype.addOnce = function (t, r, i) {
                                    return void 0 === i && (i = e.UPDATE_PRIORITY.NORMAL), this._addListener(new xr(t, r, i, !0))
                                }, t.prototype._addListener = function (t) {
                                    var e = this._head.next,
                                        r = this._head;
                                    if (e) {
                                        for (; e;) {
                                            if (t.priority > e.priority) {
                                                t.connect(r);
                                                break
                                            }
                                            r = e, e = e.next
                                        }
                                        t.previous || t.connect(r)
                                    } else t.connect(r);
                                    return this._startIfPossible(), this
                                }, t.prototype.remove = function (t, e) {
                                    for (var r = this._head.next; r;) r = r.match(t, e) ? r.destroy() : r.next;
                                    return this._head.next || this._cancelIfNeeded(), this
                                }, Object.defineProperty(t.prototype, "count", {
                                    get: function () {
                                        if (!this._head) return 0;
                                        for (var t = 0, e = this._head; e = e.next;) t++;
                                        return t
                                    },
                                    enumerable: !0,
                                    configurable: !0
                                }), t.prototype.start = function () {
                                    this.started || (this.started = !0, this._requestIfNeeded())
                                }, t.prototype.stop = function () {
                                    this.started && (this.started = !1, this._cancelIfNeeded())
                                }, t.prototype.destroy = function () {
                                    if (!this._protected) {
                                        this.stop();
                                        for (var t = this._head.next; t;) t = t.destroy(!0);
                                        this._head.destroy(), this._head = null
                                    }
                                }, t.prototype.update = function (t) {
                                    var e;
                                    if (void 0 === t && (t = performance.now()), t > this.lastTime) {
                                        if ((e = this.elapsedMS = t - this.lastTime) > this._maxElapsedMS && (e = this._maxElapsedMS), e *= this.speed, this._minElapsedMS) {
                                            var r = t - this._lastFrame | 0;
                                            if (r < this._minElapsedMS) return;
                                            this._lastFrame = t - r % this._minElapsedMS
                                        }
                                        this.deltaMS = e, this.deltaTime = this.deltaMS * V.TARGET_FPMS;
                                        for (var i = this._head, n = i.next; n;) n = n.emit(this.deltaTime);
                                        i.next || this._cancelIfNeeded()
                                    } else this.deltaTime = this.deltaMS = this.elapsedMS = 0;
                                    this.lastTime = t
                                }, Object.defineProperty(t.prototype, "FPS", {
                                    get: function () {
                                        return 1e3 / this.elapsedMS
                                    },
                                    enumerable: !0,
                                    configurable: !0
                                }), Object.defineProperty(t.prototype, "minFPS", {
                                    get: function () {
                                        return 1e3 / this._maxElapsedMS
                                    },
                                    set: function (t) {
                                        var e = Math.min(this.maxFPS, t),
                                            r = Math.min(Math.max(0, e) / 1e3, V.TARGET_FPMS);
                                        this._maxElapsedMS = 1 / r
                                    },
                                    enumerable: !0,
                                    configurable: !0
                                }), Object.defineProperty(t.prototype, "maxFPS", {
                                    get: function () {
                                        return this._minElapsedMS ? Math.round(1e3 / this._minElapsedMS) : 0
                                    },
                                    set: function (t) {
                                        if (0 === t) this._minElapsedMS = 0;
                                        else {
                                            var e = Math.max(this.minFPS, t);
                                            this._minElapsedMS = 1 / (e / 1e3)
                                        }
                                    },
                                    enumerable: !0,
                                    configurable: !0
                                }), Object.defineProperty(t, "shared", {
                                    get: function () {
                                        if (!t._shared) {
                                            var e = t._shared = new t;
                                            e.autoStart = !0, e._protected = !0
                                        }
                                        return t._shared
                                    },
                                    enumerable: !0,
                                    configurable: !0
                                }), Object.defineProperty(t, "system", {
                                    get: function () {
                                        if (!t._system) {
                                            var e = t._system = new t;
                                            e.autoStart = !0, e._protected = !0
                                        }
                                        return t._system
                                    },
                                    enumerable: !0,
                                    configurable: !0
                                }), t
                            }(),
                            Er = function () {
                                function t() {}
                                return t.init = function (t) {
                                    var r = this;
                                    t = Object.assign({
                                        autoStart: !0,
                                        sharedTicker: !1
                                    }, t), Object.defineProperty(this, "ticker", {
                                        set: function (t) {
                                            this._ticker && this._ticker.remove(this.render, this), this._ticker = t, t && t.add(this.render, this, e.UPDATE_PRIORITY.LOW)
                                        },
                                        get: function () {
                                            return this._ticker
                                        }
                                    }), this.stop = function () {
                                        r._ticker.stop()
                                    }, this.start = function () {
                                        r._ticker.start()
                                    }, this._ticker = null, this.ticker = t.sharedTicker ? br.shared : new br, t.autoStart && this.start()
                                }, t.destroy = function () {
                                    if (this._ticker) {
                                        var t = this._ticker;
                                        this.ticker = null, t.destroy()
                                    }
                                }, t
                            }(),
                            Tr = function () {
                                this.global = new Ve, this.target = null, this.originalEvent = null, this.identifier = null, this.isPrimary = !1, this.button = 0, this.buttons = 0, this.width = 0, this.height = 0, this.tiltX = 0, this.tiltY = 0, this.pointerType = null, this.pressure = 0, this.rotationAngle = 0, this.twist = 0, this.tangentialPressure = 0
                            },
                            wr = {
                                pointerId: {
                                    configurable: !0
                                }
                            };
                        wr.pointerId.get = function () {
                            return this.identifier
                        }, Tr.prototype.getLocalPosition = function (t, e, r) {
                            return t.worldTransform.applyInverse(r || this.global, e)
                        }, Tr.prototype.copyEvent = function (t) {
                            t.isPrimary && (this.isPrimary = !0), this.button = t.button, this.buttons = Number.isInteger(t.buttons) ? t.buttons : t.which, this.width = t.width, this.height = t.height, this.tiltX = t.tiltX, this.tiltY = t.tiltY, this.pointerType = t.pointerType, this.pressure = t.pressure, this.rotationAngle = t.rotationAngle, this.twist = t.twist || 0, this.tangentialPressure = t.tangentialPressure || 0
                        }, Tr.prototype.reset = function () {
                            this.isPrimary = !1
                        }, Object.defineProperties(Tr.prototype, wr);
                        var Sr = function () {
                            this.stopped = !1, this.stopsPropagatingAt = null, this.stopPropagationHint = !1, this.target = null, this.currentTarget = null, this.type = null, this.data = null
                        };
                        Sr.prototype.stopPropagation = function () {
                            this.stopped = !0, this.stopPropagationHint = !0, this.stopsPropagatingAt = this.currentTarget
                        }, Sr.prototype.reset = function () {
                            this.stopped = !1, this.stopsPropagatingAt = null, this.stopPropagationHint = !1, this.currentTarget = null, this.target = null
                        };
                        var Ir = function t(e) {
                                this._pointerId = e, this._flags = t.FLAGS.NONE
                            },
                            Pr = {
                                pointerId: {
                                    configurable: !0
                                },
                                flags: {
                                    configurable: !0
                                },
                                none: {
                                    configurable: !0
                                },
                                over: {
                                    configurable: !0
                                },
                                rightDown: {
                                    configurable: !0
                                },
                                leftDown: {
                                    configurable: !0
                                }
                            };
                        Ir.prototype._doSet = function (t, e) {
                            this._flags = e ? this._flags | t : this._flags & ~t
                        }, Pr.pointerId.get = function () {
                            return this._pointerId
                        }, Pr.flags.get = function () {
                            return this._flags
                        }, Pr.flags.set = function (t) {
                            this._flags = t
                        }, Pr.none.get = function () {
                            return this._flags === this.constructor.FLAGS.NONE
                        }, Pr.over.get = function () {
                            return 0 != (this._flags & this.constructor.FLAGS.OVER)
                        }, Pr.over.set = function (t) {
                            this._doSet(this.constructor.FLAGS.OVER, t)
                        }, Pr.rightDown.get = function () {
                            return 0 != (this._flags & this.constructor.FLAGS.RIGHT_DOWN)
                        }, Pr.rightDown.set = function (t) {
                            this._doSet(this.constructor.FLAGS.RIGHT_DOWN, t)
                        }, Pr.leftDown.get = function () {
                            return 0 != (this._flags & this.constructor.FLAGS.LEFT_DOWN)
                        }, Pr.leftDown.set = function (t) {
                            this._doSet(this.constructor.FLAGS.LEFT_DOWN, t)
                        }, Object.defineProperties(Ir.prototype, Pr), Ir.FLAGS = Object.freeze({
                            NONE: 0,
                            OVER: 1,
                            LEFT_DOWN: 2,
                            RIGHT_DOWN: 4
                        });
                        var Ar = function () {
                            this._tempPoint = new Ve
                        };
                        Ar.prototype.recursiveFindHit = function (t, e, r, i, n) {
                            if (!e || !e.visible) return !1;
                            var o = t.data.global,
                                s = !1,
                                a = n = e.interactive || n,
                                h = !0;
                            if (e.hitArea ? (i && (e.worldTransform.applyInverse(o, this._tempPoint), e.hitArea.contains(this._tempPoint.x, this._tempPoint.y) ? s = !0 : (i = !1, h = !1)), a = !1) : e._mask && i && (e._mask.containsPoint && e._mask.containsPoint(o) || (i = !1)), h && e.interactiveChildren && e.children)
                                for (var u = e.children, l = u.length - 1; l >= 0; l--) {
                                    var c = u[l],
                                        d = this.recursiveFindHit(t, c, r, i, a);
                                    if (d) {
                                        if (!c.parent) continue;
                                        a = !1, d && (t.target && (i = !1), s = !0)
                                    }
                                }
                            return n && (i && !t.target && !e.hitArea && e.containsPoint && e.containsPoint(o) && (s = !0), e.interactive && (s && !t.target && (t.target = e), r && r(t, e, !!s))), s
                        }, Ar.prototype.findHit = function (t, e, r, i) {
                            this.recursiveFindHit(t, e, r, i, !1)
                        };
                        var Or = {
                            interactive: !1,
                            interactiveChildren: !0,
                            hitArea: null,
                            get buttonMode() {
                                return "pointer" === this.cursor
                            },
                            set buttonMode(t) {
                                t ? this.cursor = "pointer" : "pointer" === this.cursor && (this.cursor = null)
                            },
                            cursor: null,
                            get trackedPointers() {
                                return void 0 === this._trackedPointers && (this._trackedPointers = {}), this._trackedPointers
                            },
                            _trackedPointers: void 0
                        };
                        pr.mixin(Or);
                        var Dr = {
                                target: null,
                                data: {
                                    global: null
                                }
                            },
                            Cr = function (t) {
                                function r(e, r) {
                                    t.call(this), r = r || {}, this.renderer = e, this.autoPreventDefault = void 0 === r.autoPreventDefault || r.autoPreventDefault, this.interactionFrequency = r.interactionFrequency || 10, this.mouse = new Tr, this.mouse.identifier = 1, this.mouse.global.set(-999999), this.activeInteractionData = {}, this.activeInteractionData[1] = this.mouse, this.interactionDataPool = [], this.eventData = new Sr, this.interactionDOMElement = null, this.moveWhenInside = !1, this.eventsAdded = !1, this.tickerAdded = !1, this.mouseOverRenderer = !1, this.supportsTouchEvents = "ontouchstart" in o.a, this.supportsPointerEvents = !!o.a.PointerEvent, this.onPointerUp = this.onPointerUp.bind(this), this.processPointerUp = this.processPointerUp.bind(this), this.onPointerCancel = this.onPointerCancel.bind(this), this.processPointerCancel = this.processPointerCancel.bind(this), this.onPointerDown = this.onPointerDown.bind(this), this.processPointerDown = this.processPointerDown.bind(this), this.onPointerMove = this.onPointerMove.bind(this), this.processPointerMove = this.processPointerMove.bind(this), this.onPointerOut = this.onPointerOut.bind(this), this.processPointerOverOut = this.processPointerOverOut.bind(this), this.onPointerOver = this.onPointerOver.bind(this), this.cursorStyles = {
                                        default: "inherit",
                                        pointer: "pointer"
                                    }, this.currentCursorMode = null, this.cursor = null, this.resolution = 1, this.delayedEvents = [], this.search = new Ar, this._useSystemTicker = void 0 === r.useSystemTicker || r.useSystemTicker, this.setTargetElement(this.renderer.view, this.renderer.resolution)
                                }
                                t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r;
                                var i = {
                                    useSystemTicker: {
                                        configurable: !0
                                    }
                                };
                                return i.useSystemTicker.get = function () {
                                    return this._useSystemTicker
                                }, i.useSystemTicker.set = function (t) {
                                    this._useSystemTicker = t, t ? this.addTickerListener() : this.removeTickerListener()
                                }, r.prototype.hitTest = function (t, e) {
                                    return Dr.target = null, Dr.data.global = t, e || (e = this.renderer._lastObjectRendered), this.processInteractive(Dr, e, null, !0), Dr.target
                                }, r.prototype.setTargetElement = function (t, e) {
                                    void 0 === e && (e = 1), this.removeTickerListener(), this.removeEvents(), this.interactionDOMElement = t, this.resolution = e, this.addEvents(), this.addTickerListener()
                                }, r.prototype.addTickerListener = function () {
                                    !this.tickerAdded && this.interactionDOMElement && this._useSystemTicker && (br.system.add(this.tickerUpdate, this, e.UPDATE_PRIORITY.INTERACTION), this.tickerAdded = !0)
                                }, r.prototype.removeTickerListener = function () {
                                    this.tickerAdded && (br.system.remove(this.tickerUpdate, this), this.tickerAdded = !1)
                                }, r.prototype.addEvents = function () {
                                    !this.eventsAdded && this.interactionDOMElement && (o.a.navigator.msPointerEnabled ? (this.interactionDOMElement.style["-ms-content-zooming"] = "none", this.interactionDOMElement.style["-ms-touch-action"] = "none") : this.supportsPointerEvents && (this.interactionDOMElement.style["touch-action"] = "none"), this.supportsPointerEvents ? (o.a.document.addEventListener("pointermove", this.onPointerMove, !0), this.interactionDOMElement.addEventListener("pointerdown", this.onPointerDown, !0), this.interactionDOMElement.addEventListener("pointerleave", this.onPointerOut, !0), this.interactionDOMElement.addEventListener("pointerover", this.onPointerOver, !0), o.a.addEventListener("pointercancel", this.onPointerCancel, !0), o.a.addEventListener("pointerup", this.onPointerUp, !0)) : (o.a.document.addEventListener("mousemove", this.onPointerMove, !0), this.interactionDOMElement.addEventListener("mousedown", this.onPointerDown, !0), this.interactionDOMElement.addEventListener("mouseout", this.onPointerOut, !0), this.interactionDOMElement.addEventListener("mouseover", this.onPointerOver, !0), o.a.addEventListener("mouseup", this.onPointerUp, !0)), this.supportsTouchEvents && (this.interactionDOMElement.addEventListener("touchstart", this.onPointerDown, !0), this.interactionDOMElement.addEventListener("touchcancel", this.onPointerCancel, !0), this.interactionDOMElement.addEventListener("touchend", this.onPointerUp, !0), this.interactionDOMElement.addEventListener("touchmove", this.onPointerMove, !0)), this.eventsAdded = !0)
                                }, r.prototype.removeEvents = function () {
                                    this.eventsAdded && this.interactionDOMElement && (o.a.navigator.msPointerEnabled ? (this.interactionDOMElement.style["-ms-content-zooming"] = "", this.interactionDOMElement.style["-ms-touch-action"] = "") : this.supportsPointerEvents && (this.interactionDOMElement.style["touch-action"] = ""), this.supportsPointerEvents ? (o.a.document.removeEventListener("pointermove", this.onPointerMove, !0), this.interactionDOMElement.removeEventListener("pointerdown", this.onPointerDown, !0), this.interactionDOMElement.removeEventListener("pointerleave", this.onPointerOut, !0), this.interactionDOMElement.removeEventListener("pointerover", this.onPointerOver, !0), o.a.removeEventListener("pointercancel", this.onPointerCancel, !0), o.a.removeEventListener("pointerup", this.onPointerUp, !0)) : (o.a.document.removeEventListener("mousemove", this.onPointerMove, !0), this.interactionDOMElement.removeEventListener("mousedown", this.onPointerDown, !0), this.interactionDOMElement.removeEventListener("mouseout", this.onPointerOut, !0), this.interactionDOMElement.removeEventListener("mouseover", this.onPointerOver, !0), o.a.removeEventListener("mouseup", this.onPointerUp, !0)), this.supportsTouchEvents && (this.interactionDOMElement.removeEventListener("touchstart", this.onPointerDown, !0), this.interactionDOMElement.removeEventListener("touchcancel", this.onPointerCancel, !0), this.interactionDOMElement.removeEventListener("touchend", this.onPointerUp, !0), this.interactionDOMElement.removeEventListener("touchmove", this.onPointerMove, !0)), this.interactionDOMElement = null, this.eventsAdded = !1)
                                }, r.prototype.tickerUpdate = function (t) {
                                    this._deltaTime += t, this._deltaTime < this.interactionFrequency || (this._deltaTime = 0, this.update())
                                }, r.prototype.update = function () {
                                    if (this.interactionDOMElement)
                                        if (this.didMove) this.didMove = !1;
                                        else {
                                            for (var t in this.cursor = null, this.activeInteractionData)
                                                if (this.activeInteractionData.hasOwnProperty(t)) {
                                                    var e = this.activeInteractionData[t];
                                                    if (e.originalEvent && "touch" !== e.pointerType) {
                                                        var r = this.configureInteractionEventForDOMEvent(this.eventData, e.originalEvent, e);
                                                        this.processInteractive(r, this.renderer._lastObjectRendered, this.processPointerOverOut, !0)
                                                    }
                                                } this.setCursorMode(this.cursor)
                                        }
                                }, r.prototype.setCursorMode = function (t) {
                                    if (t = t || "default", this.currentCursorMode !== t) {
                                        this.currentCursorMode = t;
                                        var e = this.cursorStyles[t];
                                        if (e) switch (a(e)) {
                                            case "string":
                                                this.interactionDOMElement.style.cursor = e;
                                                break;
                                            case "function":
                                                e(t);
                                                break;
                                            case "object":
                                                Object.assign(this.interactionDOMElement.style, e)
                                        } else "string" != typeof t || Object.prototype.hasOwnProperty.call(this.cursorStyles, t) || (this.interactionDOMElement.style.cursor = t)
                                    }
                                }, r.prototype.dispatchEvent = function (t, e, r) {
                                    r.stopPropagationHint && t !== r.stopsPropagatingAt || (r.currentTarget = t, r.type = e, t.emit(e, r), t[e] && t[e](r))
                                }, r.prototype.delayDispatchEvent = function (t, e, r) {
                                    this.delayedEvents.push({
                                        displayObject: t,
                                        eventString: e,
                                        eventData: r
                                    })
                                }, r.prototype.mapPositionToPoint = function (t, e, r) {
                                    var i;
                                    i = this.interactionDOMElement.parentElement ? this.interactionDOMElement.getBoundingClientRect() : {
                                        x: 0,
                                        y: 0,
                                        width: 0,
                                        height: 0
                                    };
                                    var n = 1 / this.resolution;
                                    t.x = (e - i.left) * (this.interactionDOMElement.width / i.width) * n, t.y = (r - i.top) * (this.interactionDOMElement.height / i.height) * n
                                }, r.prototype.processInteractive = function (t, e, r, i) {
                                    var n = this.search.findHit(t, e, r, i),
                                        o = this.delayedEvents;
                                    if (!o.length) return n;
                                    t.stopPropagationHint = !1;
                                    var s = o.length;
                                    this.delayedEvents = [];
                                    for (var a = 0; a < s; a++) {
                                        var h = o[a],
                                            u = h.displayObject,
                                            l = h.eventString,
                                            c = h.eventData;
                                        c.stopsPropagatingAt === u && (c.stopPropagationHint = !0), this.dispatchEvent(u, l, c)
                                    }
                                    return n
                                }, r.prototype.onPointerDown = function (t) {
                                    if (!this.supportsTouchEvents || "touch" !== t.pointerType) {
                                        var e = this.normalizeToPointerData(t);
                                        if (this.autoPreventDefault && e[0].isNormalized)(t.cancelable || !("cancelable" in t)) && t.preventDefault();
                                        for (var r = e.length, i = 0; i < r; i++) {
                                            var n = e[i],
                                                o = this.getInteractionDataForPointerId(n),
                                                s = this.configureInteractionEventForDOMEvent(this.eventData, n, o);
                                            if (s.data.originalEvent = t, this.processInteractive(s, this.renderer._lastObjectRendered, this.processPointerDown, !0), this.emit("pointerdown", s), "touch" === n.pointerType) this.emit("touchstart", s);
                                            else if ("mouse" === n.pointerType || "pen" === n.pointerType) {
                                                var a = 2 === n.button;
                                                this.emit(a ? "rightdown" : "mousedown", this.eventData)
                                            }
                                        }
                                    }
                                }, r.prototype.processPointerDown = function (t, e, r) {
                                    var i = t.data,
                                        n = t.data.identifier;
                                    if (r)
                                        if (e.trackedPointers[n] || (e.trackedPointers[n] = new Ir(n)), this.dispatchEvent(e, "pointerdown", t), "touch" === i.pointerType) this.dispatchEvent(e, "touchstart", t);
                                        else if ("mouse" === i.pointerType || "pen" === i.pointerType) {
                                        var o = 2 === i.button;
                                        o ? e.trackedPointers[n].rightDown = !0 : e.trackedPointers[n].leftDown = !0, this.dispatchEvent(e, o ? "rightdown" : "mousedown", t)
                                    }
                                }, r.prototype.onPointerComplete = function (t, e, r) {
                                    for (var i = this.normalizeToPointerData(t), n = i.length, o = t.target !== this.interactionDOMElement ? "outside" : "", s = 0; s < n; s++) {
                                        var a = i[s],
                                            h = this.getInteractionDataForPointerId(a),
                                            u = this.configureInteractionEventForDOMEvent(this.eventData, a, h);
                                        if (u.data.originalEvent = t, this.processInteractive(u, this.renderer._lastObjectRendered, r, e || !o), this.emit(e ? "pointercancel" : "pointerup" + o, u), "mouse" === a.pointerType || "pen" === a.pointerType) {
                                            var l = 2 === a.button;
                                            this.emit(l ? "rightup" + o : "mouseup" + o, u)
                                        } else "touch" === a.pointerType && (this.emit(e ? "touchcancel" : "touchend" + o, u), this.releaseInteractionDataForPointerId(a.pointerId, h))
                                    }
                                }, r.prototype.onPointerCancel = function (t) {
                                    this.supportsTouchEvents && "touch" === t.pointerType || this.onPointerComplete(t, !0, this.processPointerCancel)
                                }, r.prototype.processPointerCancel = function (t, e) {
                                    var r = t.data,
                                        i = t.data.identifier;
                                    void 0 !== e.trackedPointers[i] && (delete e.trackedPointers[i], this.dispatchEvent(e, "pointercancel", t), "touch" === r.pointerType && this.dispatchEvent(e, "touchcancel", t))
                                }, r.prototype.onPointerUp = function (t) {
                                    this.supportsTouchEvents && "touch" === t.pointerType || this.onPointerComplete(t, !1, this.processPointerUp)
                                }, r.prototype.processPointerUp = function (t, e, r) {
                                    var i = t.data,
                                        n = t.data.identifier,
                                        o = e.trackedPointers[n],
                                        s = "touch" === i.pointerType,
                                        a = "mouse" === i.pointerType || "pen" === i.pointerType,
                                        h = !1;
                                    if (a) {
                                        var u = 2 === i.button,
                                            l = Ir.FLAGS,
                                            c = u ? l.RIGHT_DOWN : l.LEFT_DOWN,
                                            d = void 0 !== o && o.flags & c;
                                        r ? (this.dispatchEvent(e, u ? "rightup" : "mouseup", t), d && (this.dispatchEvent(e, u ? "rightclick" : "click", t), h = !0)) : d && this.dispatchEvent(e, u ? "rightupoutside" : "mouseupoutside", t), o && (u ? o.rightDown = !1 : o.leftDown = !1)
                                    }
                                    r ? (this.dispatchEvent(e, "pointerup", t), s && this.dispatchEvent(e, "touchend", t), o && (a && !h || this.dispatchEvent(e, "pointertap", t), s && (this.dispatchEvent(e, "tap", t), o.over = !1))) : o && (this.dispatchEvent(e, "pointerupoutside", t), s && this.dispatchEvent(e, "touchendoutside", t)), o && o.none && delete e.trackedPointers[n]
                                }, r.prototype.onPointerMove = function (t) {
                                    if (!this.supportsTouchEvents || "touch" !== t.pointerType) {
                                        var e = this.normalizeToPointerData(t);
                                        "mouse" !== e[0].pointerType && "pen" !== e[0].pointerType || (this.didMove = !0, this.cursor = null);
                                        for (var r = e.length, i = 0; i < r; i++) {
                                            var n = e[i],
                                                o = this.getInteractionDataForPointerId(n),
                                                s = this.configureInteractionEventForDOMEvent(this.eventData, n, o);
                                            s.data.originalEvent = t, this.processInteractive(s, this.renderer._lastObjectRendered, this.processPointerMove, !0), this.emit("pointermove", s), "touch" === n.pointerType && this.emit("touchmove", s), "mouse" !== n.pointerType && "pen" !== n.pointerType || this.emit("mousemove", s)
                                        }
                                        "mouse" === e[0].pointerType && this.setCursorMode(this.cursor)
                                    }
                                }, r.prototype.processPointerMove = function (t, e, r) {
                                    var i = t.data,
                                        n = "touch" === i.pointerType,
                                        o = "mouse" === i.pointerType || "pen" === i.pointerType;
                                    o && this.processPointerOverOut(t, e, r), this.moveWhenInside && !r || (this.dispatchEvent(e, "pointermove", t), n && this.dispatchEvent(e, "touchmove", t), o && this.dispatchEvent(e, "mousemove", t))
                                }, r.prototype.onPointerOut = function (t) {
                                    if (!this.supportsTouchEvents || "touch" !== t.pointerType) {
                                        var e = this.normalizeToPointerData(t)[0];
                                        "mouse" === e.pointerType && (this.mouseOverRenderer = !1, this.setCursorMode(null));
                                        var r = this.getInteractionDataForPointerId(e),
                                            i = this.configureInteractionEventForDOMEvent(this.eventData, e, r);
                                        i.data.originalEvent = e, this.processInteractive(i, this.renderer._lastObjectRendered, this.processPointerOverOut, !1), this.emit("pointerout", i), "mouse" === e.pointerType || "pen" === e.pointerType ? this.emit("mouseout", i) : this.releaseInteractionDataForPointerId(r.identifier)
                                    }
                                }, r.prototype.processPointerOverOut = function (t, e, r) {
                                    var i = t.data,
                                        n = t.data.identifier,
                                        o = "mouse" === i.pointerType || "pen" === i.pointerType,
                                        s = e.trackedPointers[n];
                                    r && !s && (s = e.trackedPointers[n] = new Ir(n)), void 0 !== s && (r && this.mouseOverRenderer ? (s.over || (s.over = !0, this.delayDispatchEvent(e, "pointerover", t), o && this.delayDispatchEvent(e, "mouseover", t)), o && null === this.cursor && (this.cursor = e.cursor)) : s.over && (s.over = !1, this.dispatchEvent(e, "pointerout", this.eventData), o && this.dispatchEvent(e, "mouseout", t), s.none && delete e.trackedPointers[n]))
                                }, r.prototype.onPointerOver = function (t) {
                                    var e = this.normalizeToPointerData(t)[0],
                                        r = this.getInteractionDataForPointerId(e),
                                        i = this.configureInteractionEventForDOMEvent(this.eventData, e, r);
                                    i.data.originalEvent = e, "mouse" === e.pointerType && (this.mouseOverRenderer = !0), this.emit("pointerover", i), "mouse" !== e.pointerType && "pen" !== e.pointerType || this.emit("mouseover", i)
                                }, r.prototype.getInteractionDataForPointerId = function (t) {
                                    var e, r = t.pointerId;
                                    return 1 === r || "mouse" === t.pointerType ? e = this.mouse : this.activeInteractionData[r] ? e = this.activeInteractionData[r] : ((e = this.interactionDataPool.pop() || new Tr).identifier = r, this.activeInteractionData[r] = e), e.copyEvent(t), e
                                }, r.prototype.releaseInteractionDataForPointerId = function (t) {
                                    var e = this.activeInteractionData[t];
                                    e && (delete this.activeInteractionData[t], e.reset(), this.interactionDataPool.push(e))
                                }, r.prototype.configureInteractionEventForDOMEvent = function (t, e, r) {
                                    return t.data = r, this.mapPositionToPoint(r.global, e.clientX, e.clientY), "touch" === e.pointerType && (e.globalX = r.global.x, e.globalY = r.global.y), r.originalEvent = e, t.reset(), t
                                }, r.prototype.normalizeToPointerData = function (t) {
                                    var e = [];
                                    if (this.supportsTouchEvents && t instanceof s.a)
                                        for (var r = 0, i = t.changedTouches.length; r < i; r++) {
                                            var n = t.changedTouches[r];
                                            void 0 === n.button && (n.button = t.touches.length ? 1 : 0), void 0 === n.buttons && (n.buttons = t.touches.length ? 1 : 0), void 0 === n.isPrimary && (n.isPrimary = 1 === t.touches.length && "touchstart" === t.type), void 0 === n.width && (n.width = n.radiusX || 1), void 0 === n.height && (n.height = n.radiusY || 1), void 0 === n.tiltX && (n.tiltX = 0), void 0 === n.tiltY && (n.tiltY = 0), void 0 === n.pointerType && (n.pointerType = "touch"), void 0 === n.pointerId && (n.pointerId = n.identifier || 0), void 0 === n.pressure && (n.pressure = n.force || .5), void 0 === n.twist && (n.twist = 0), void 0 === n.tangentialPressure && (n.tangentialPressure = 0), void 0 === n.layerX && (n.layerX = n.offsetX = n.clientX), void 0 === n.layerY && (n.layerY = n.offsetY = n.clientY), n.isNormalized = !0, e.push(n)
                                        } else !(t instanceof f) || this.supportsPointerEvents && t instanceof o.a.PointerEvent || (void 0 === t.isPrimary && (t.isPrimary = !0), void 0 === t.width && (t.width = 1), void 0 === t.height && (t.height = 1), void 0 === t.tiltX && (t.tiltX = 0), void 0 === t.tiltY && (t.tiltY = 0), void 0 === t.pointerType && (t.pointerType = "mouse"), void 0 === t.pointerId && (t.pointerId = 1), void 0 === t.pressure && (t.pressure = .5), void 0 === t.twist && (t.twist = 0), void 0 === t.tangentialPressure && (t.tangentialPressure = 0), t.isNormalized = !0), e.push(t);
                                    return e
                                }, r.prototype.destroy = function () {
                                    this.removeEvents(), this.removeTickerListener(), this.removeAllListeners(), this.renderer = null, this.mouse = null, this.eventData = null, this.interactionDOMElement = null, this.onPointerDown = null, this.processPointerDown = null, this.onPointerUp = null, this.processPointerUp = null, this.onPointerCancel = null, this.processPointerCancel = null, this.onPointerMove = null, this.processPointerMove = null, this.onPointerOut = null, this.processPointerOverOut = null, this.onPointerOver = null, this.search = null
                                }, Object.defineProperties(r.prototype, i), r
                            }(W),
                            Mr = {
                                InteractionData: Tr,
                                InteractionEvent: Sr,
                                InteractionManager: Cr,
                                InteractionTrackingData: Ir,
                                interactiveTarget: Or
                            },
                            Rr = function () {
                                function t(t) {
                                    this.items = [], this._name = t, this._aliasCount = 0
                                }
                                return t.prototype.emit = function (t, e, r, i, n, o, s, a) {
                                    if (arguments.length > 8) throw new Error("max arguments reached");
                                    var h = this,
                                        u = h.name,
                                        l = h.items;
                                    this._aliasCount++;
                                    for (var c = 0, d = l.length; c < d; c++) l[c][u](t, e, r, i, n, o, s, a);
                                    return l === this.items && this._aliasCount--, this
                                }, t.prototype.ensureNonAliasedItems = function () {
                                    this._aliasCount > 0 && this.items.length > 1 && (this._aliasCount = 0, this.items = this.items.slice(0))
                                }, t.prototype.add = function (t) {
                                    return t[this._name] && (this.ensureNonAliasedItems(), this.remove(t), this.items.push(t)), this
                                }, t.prototype.remove = function (t) {
                                    var e = this.items.indexOf(t);
                                    return -1 !== e && (this.ensureNonAliasedItems(), this.items.splice(e, 1)), this
                                }, t.prototype.contains = function (t) {
                                    return -1 !== this.items.indexOf(t)
                                }, t.prototype.removeAll = function () {
                                    return this.ensureNonAliasedItems(), this.items.length = 0, this
                                }, t.prototype.destroy = function () {
                                    this.removeAll(), this.items = null, this._name = null
                                }, Object.defineProperty(t.prototype, "empty", {
                                    get: function () {
                                        return 0 === this.items.length
                                    },
                                    enumerable: !0,
                                    configurable: !0
                                }), Object.defineProperty(t.prototype, "name", {
                                    get: function () {
                                        return this._name
                                    },
                                    enumerable: !0,
                                    configurable: !0
                                }), t
                            }();
                        Object.defineProperties(Rr.prototype, {
                            dispatch: {
                                value: Rr.prototype.emit
                            },
                            run: {
                                value: Rr.prototype.emit
                            }
                        });
                        /*!
                         * @pixi/core - v5.2.1
                         * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                         *
                         * @pixi/core is licensed under the MIT License.
                         * http://www.opensource.org/licenses/mit-license
                         */
                        var Nr = function (t, e) {
                                void 0 === t && (t = 0), void 0 === e && (e = 0), this._width = t, this._height = e, this.destroyed = !1, this.internal = !1, this.onResize = new Rr("setRealSize", 2), this.onUpdate = new Rr("update"), this.onError = new Rr("onError", 1)
                            },
                            Lr = {
                                valid: {
                                    configurable: !0
                                },
                                width: {
                                    configurable: !0
                                },
                                height: {
                                    configurable: !0
                                }
                            };
                        Nr.prototype.bind = function (t) {
                            this.onResize.add(t), this.onUpdate.add(t), this.onError.add(t), (this._width || this._height) && this.onResize.run(this._width, this._height)
                        }, Nr.prototype.unbind = function (t) {
                            this.onResize.remove(t), this.onUpdate.remove(t), this.onError.remove(t)
                        }, Nr.prototype.resize = function (t, e) {
                            t === this._width && e === this._height || (this._width = t, this._height = e, this.onResize.run(t, e))
                        }, Lr.valid.get = function () {
                            return !!this._width && !!this._height
                        }, Nr.prototype.update = function () {
                            this.destroyed || this.onUpdate.run()
                        }, Nr.prototype.load = function () {
                            return Promise.resolve()
                        }, Lr.width.get = function () {
                            return this._width
                        }, Lr.height.get = function () {
                            return this._height
                        }, Nr.prototype.upload = function (t, e, r) {
                            return !1
                        }, Nr.prototype.style = function (t, e, r) {
                            return !1
                        }, Nr.prototype.dispose = function () {}, Nr.prototype.destroy = function () {
                            this.destroyed || (this.destroyed = !0, this.dispose(), this.onError.removeAll(), this.onError = null, this.onResize.removeAll(), this.onResize = null, this.onUpdate.removeAll(), this.onUpdate = null)
                        }, Object.defineProperties(Nr.prototype, Lr);
                        var Fr = function (t) {
                                function r(e) {
                                    var r = e.naturalWidth || e.videoWidth || e.width,
                                        i = e.naturalHeight || e.videoHeight || e.height;
                                    t.call(this, r, i), this.source = e, this.noSubImage = !1
                                }
                                return t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r, r.crossOrigin = function (t, e, r) {
                                    void 0 === r && "string" == typeof e && 0 !== e.indexOf("data:") ? t.crossOrigin = He(e) : !1 !== r && (t.crossOrigin = "string" == typeof r ? r : "anonymous")
                                }, r.prototype.upload = function (t, r, i, n) {
                                    var o = t.gl,
                                        s = r.realWidth,
                                        a = r.realHeight;
                                    if (n = n || this.source, o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL, r.alphaMode === e.ALPHA_MODES.UNPACK), this.noSubImage || r.target !== o.TEXTURE_2D || i.width !== s || i.height !== a)
                                        if (i.width = s, i.height = a, "canvas" == n.type) {
                                            n = n.getContext("2d").getImageData(0, 0, n.width, n.height), o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL, r.alphaMode === e.ALPHA_MODES.UNPACK);
                                            h = new Uint8Array(n.data);
                                            i.width = r.width, i.height = r.height, o.texImage2D(r.target, 0, i.internalFormat, r.width, r.height, 0, r.format, i.type, h)
                                        } else o.texImage2D(r.target, 0, r.format, r.format, r.type, n);
                                    else if ("canvas" == n.type) {
                                        n = n.getContext("2d").getImageData(0, 0, n.width, n.height), o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL, r.alphaMode === e.ALPHA_MODES.UNPACK);
                                        var h = new Uint8Array(n.data);
                                        o.texSubImage2D(o.TEXTURE_2D, 0, 0, 0, r.format, r.type, h)
                                    } else o.texSubImage2D(o.TEXTURE_2D, 0, 0, 0, r.format, r.type, n);
                                    return !0
                                }, r.prototype.update = function () {
                                    if (!this.destroyed) {
                                        var e = this.source.naturalWidth || this.source.videoWidth || this.source.width,
                                            r = this.source.naturalHeight || this.source.videoHeight || this.source.height;
                                        this.resize(e, r), t.prototype.update.call(this)
                                    }
                                }, r.prototype.dispose = function () {
                                    this.source = null
                                }, r
                            }(Nr),
                            Br = function (t) {
                                function r(e, r) {
                                    if (r = r || {}, "string" == typeof e) {
                                        var i = new g;
                                        t.crossOrigin(i, e, r.crossorigin), i.src = e, e = i
                                    }
                                    t.call(this, e), !e.complete && this._width && this._height && (this._width = 0, this._height = 0), this.url = e.src, this._process = null, this.preserveBitmap = !1, this.createBitmap = (void 0 !== r.createBitmap ? r.createBitmap : V.CREATE_IMAGE_BITMAP) && !!o.a.createImageBitmap, this.alphaMode = "number" == typeof r.alphaMode ? r.alphaMode : null, void 0 !== r.premultiplyAlpha && (this.premultiplyAlpha = r.premultiplyAlpha), this.bitmap = null, this._load = null, !1 !== r.autoLoad && this.load()
                                }
                                return t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r, r.prototype.load = function (t) {
                                    var e = this;
                                    return void 0 !== t && (this.createBitmap = t), this._load || (this._load = new Promise((function (t) {
                                        e.url = e.source.src;
                                        var r = e.source,
                                            i = function () {
                                                e.destroyed || (r.onload = null, r.onerror = null, e.resize(r.width, r.height), e._load = null, e.createBitmap ? t(e.process()) : t(e))
                                            };
                                        r.complete && r.src ? i() : (r.onload = i, r.onerror = function (t) {
                                            return e.onError.run(t)
                                        })
                                    }))), this._load
                                }, r.prototype.process = function () {
                                    var t = this;
                                    return null !== this._process ? this._process : null === this.bitmap && o.a.createImageBitmap ? (this._process = o.a.createImageBitmap(this.source, 0, 0, this.source.width, this.source.height, {
                                        premultiplyAlpha: this.premultiplyAlpha === e.ALPHA_MODES.UNPACK ? "premultiply" : "none"
                                    }).then((function (e) {
                                        return t.destroyed ? Promise.reject() : (t.bitmap = e, t.update(), t._process = null, Promise.resolve(t))
                                    })), this._process) : Promise.resolve(this)
                                }, r.prototype.upload = function (e, r, i) {
                                    if ("number" == typeof this.alphaMode && (r.alphaMode = this.alphaMode), !this.createBitmap) return t.prototype.upload.call(this, e, r, i);
                                    if (!this.bitmap && (this.process(), !this.bitmap)) return !1;
                                    if (t.prototype.upload.call(this, e, r, i, this.bitmap), !this.preserveBitmap) {
                                        var n = !0;
                                        for (var o in r._glTextures) {
                                            var s = r._glTextures[o];
                                            if (s !== i && s.dirtyId !== r.dirtyId) {
                                                n = !1;
                                                break
                                            }
                                        }
                                        n && (this.bitmap.close && this.bitmap.close(), this.bitmap = null)
                                    }
                                    return !0
                                }, r.prototype.dispose = function () {
                                    this.source.onload = null, this.source.onerror = null, t.prototype.dispose.call(this), this.bitmap && (this.bitmap.close(), this.bitmap = null), this._process = null, this._load = null
                                }, r
                            }(Fr),
                            Ur = [];

                        function kr(t, e) {
                            if (!t) return null;
                            var r = "";
                            if ("string" == typeof t) {
                                var i = /\.(\w{3,4})(?:$|\?|#)/i.exec(t);
                                i && (r = i[1].toLowerCase())
                            }
                            for (var n = Ur.length - 1; n >= 0; --n) {
                                var o = Ur[n];
                                if (o.test && o.test(t, r)) return new o(t, e)
                            }
                            return new Br(t, e)
                        }
                        var Xr = function (t) {
                                function r(e, r) {
                                    var i = r || {},
                                        n = i.width,
                                        o = i.height;
                                    if (!n || !o) throw new Error("BufferResource width or height invalid");
                                    t.call(this, n, o), this.data = e
                                }
                                return t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r, r.prototype.upload = function (t, r, i) {
                                    var n = t.gl;
                                    return n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL, r.alphaMode === e.ALPHA_MODES.UNPACK), i.width === r.width && i.height === r.height ? n.texSubImage2D(r.target, 0, 0, 0, r.width, r.height, r.format, r.type, this.data) : (i.width = r.width, i.height = r.height, n.texImage2D(r.target, 0, i.internalFormat, r.width, r.height, 0, r.format, i.type, this.data)), !0
                                }, r.prototype.dispose = function () {
                                    this.data = null
                                }, r.test = function (t) {
                                    return t instanceof Float32Array || t instanceof Uint8Array || t instanceof Uint32Array
                                }, r
                            }(Nr),
                            jr = {
                                scaleMode: e.SCALE_MODES.NEAREST,
                                format: e.FORMATS.RGBA,
                                alphaMode: e.ALPHA_MODES.NPM
                            },
                            Hr = function (t) {
                                function r(r, i) {
                                    void 0 === r && (r = null), void 0 === i && (i = null), t.call(this);
                                    var n = (i = i || {}).alphaMode,
                                        o = i.mipmap,
                                        s = i.anisotropicLevel,
                                        a = i.scaleMode,
                                        h = i.width,
                                        u = i.height,
                                        l = i.wrapMode,
                                        c = i.format,
                                        d = i.type,
                                        p = i.target,
                                        f = i.resolution,
                                        m = i.resourceOptions;
                                    !r || r instanceof Nr || ((r = kr(r, m)).internal = !0), this.width = h || 0, this.height = u || 0, this.resolution = f || V.RESOLUTION, this.mipmap = void 0 !== o ? o : V.MIPMAP_TEXTURES, this.anisotropicLevel = void 0 !== s ? s : V.ANISOTROPIC_LEVEL, this.wrapMode = l || V.WRAP_MODE, this.scaleMode = void 0 !== a ? a : V.SCALE_MODE, this.format = c || e.FORMATS.RGBA, this.type = d || e.TYPES.UNSIGNED_BYTE, this.target = p || e.TARGETS.TEXTURE_2D, this.alphaMode = void 0 !== n ? n : e.ALPHA_MODES.UNPACK, void 0 !== i.premultiplyAlpha && (this.premultiplyAlpha = i.premultiplyAlpha), this.uid = Me(), this.touched = 0, this.isPowerOfTwo = !1, this._refreshPOT(), this._glTextures = {}, this.dirtyId = 0, this.dirtyStyleId = 0, this.cacheId = null, this.valid = h > 0 && u > 0, this.textureCacheIds = [], this.destroyed = !1, this.resource = null, this._batchEnabled = 0, this._batchLocation = 0, this.setResource(r)
                                }
                                t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r;
                                var i = {
                                    realWidth: {
                                        configurable: !0
                                    },
                                    realHeight: {
                                        configurable: !0
                                    }
                                };
                                return i.realWidth.get = function () {
                                    return Math.ceil(this.width * this.resolution - 1e-4)
                                }, i.realHeight.get = function () {
                                    return Math.ceil(this.height * this.resolution - 1e-4)
                                }, r.prototype.setStyle = function (t, e) {
                                    var r;
                                    return void 0 !== t && t !== this.scaleMode && (this.scaleMode = t, r = !0), void 0 !== e && e !== this.mipmap && (this.mipmap = e, r = !0), r && this.dirtyStyleId++, this
                                }, r.prototype.setSize = function (t, e, r) {
                                    return this.resolution = r || this.resolution, this.width = t, this.height = e, this._refreshPOT(), this.update(), this
                                }, r.prototype.setRealSize = function (t, e, r) {
                                    return this.resolution = r || this.resolution, this.width = t / this.resolution, this.height = e / this.resolution, this._refreshPOT(), this.update(), this
                                }, r.prototype._refreshPOT = function () {
                                    this.isPowerOfTwo = Pe(this.realWidth) && Pe(this.realHeight)
                                }, r.prototype.setResolution = function (t) {
                                    var e = this.resolution;
                                    return e === t || (this.resolution = t, this.valid && (this.width = this.width * e / t, this.height = this.height * e / t, this.emit("update", this)), this._refreshPOT()), this
                                }, r.prototype.setResource = function (t) {
                                    if (this.resource === t) return this;
                                    if (this.resource) throw new Error("Resource can be set only once");
                                    return t.bind(this), this.resource = t, this
                                }, r.prototype.update = function () {
                                    this.valid ? (this.dirtyId++, this.dirtyStyleId++, this.emit("update", this)) : this.width > 0 && this.height > 0 && (this.valid = !0, this.emit("loaded", this), this.emit("update", this))
                                }, r.prototype.onError = function (t) {
                                    this.emit("error", this, t)
                                }, r.prototype.destroy = function () {
                                    this.resource && (this.resource.unbind(this), this.resource.internal && this.resource.destroy(), this.resource = null), this.cacheId && (delete Be[this.cacheId], delete Fe[this.cacheId], this.cacheId = null), this.dispose(), r.removeFromCache(this), this.textureCacheIds = null, this.destroyed = !0
                                }, r.prototype.dispose = function () {
                                    this.emit("dispose", this)
                                }, r.from = function (t, e, i) {
                                    void 0 === i && (i = V.STRICT_TEXTURE_CACHE);
                                    var n = "string" == typeof t,
                                        o = null;
                                    n ? o = t : (t._pixiId || (t._pixiId = "pixiid_" + Me()), o = t._pixiId);
                                    var s = Be[o];
                                    if (n && i && !s) throw new Error('The cacheId "' + o + '" does not exist in BaseTextureCache.');
                                    return s || ((s = new r(t, e)).cacheId = o, r.addToCache(s, o)), s
                                }, r.fromBuffer = function (t, i, n, o) {
                                    t = t || new Float32Array(i * n * 4);
                                    var s = new Xr(t, {
                                            width: i,
                                            height: n
                                        }),
                                        a = t instanceof Float32Array ? e.TYPES.FLOAT : e.TYPES.UNSIGNED_BYTE;
                                    return new r(s, Object.assign(jr, o || {
                                        width: i,
                                        height: n,
                                        type: a
                                    }))
                                }, r.addToCache = function (t, e) {
                                    e && (-1 === t.textureCacheIds.indexOf(e) && t.textureCacheIds.push(e), Be[e] && console.warn("BaseTexture added to the cache with an id [" + e + "] that already had an entry"), Be[e] = t)
                                }, r.removeFromCache = function (t) {
                                    if ("string" == typeof t) {
                                        var e = Be[t];
                                        if (e) {
                                            var r = e.textureCacheIds.indexOf(t);
                                            return r > -1 && e.textureCacheIds.splice(r, 1), delete Be[t], e
                                        }
                                    } else if (t && t.textureCacheIds) {
                                        for (var i = 0; i < t.textureCacheIds.length; ++i) delete Be[t.textureCacheIds[i]];
                                        return t.textureCacheIds.length = 0, t
                                    }
                                    return null
                                }, Object.defineProperties(r.prototype, i), r
                            }(W);
                        Hr._globalBatch = 0;
                        var Gr = function (t) {
                                function r(e, r) {
                                    var i;
                                    r = r || {};
                                    var n = e;
                                    Array.isArray(e) && (i = e, n = e.length), t.call(this, r.width, r.height), this.items = [], this.itemDirtyIds = [];
                                    for (var o = 0; o < n; o++) {
                                        var s = new Hr;
                                        this.items.push(s), this.itemDirtyIds.push(-1)
                                    }
                                    if (this.length = n, this._load = null, i)
                                        for (var a = 0; a < n; a++) this.addResourceAt(kr(i[a], r), a)
                                }
                                return t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r, r.prototype.dispose = function () {
                                    for (var t = 0, e = this.length; t < e; t++) this.items[t].destroy();
                                    this.items = null, this.itemDirtyIds = null, this._load = null
                                }, r.prototype.addResourceAt = function (t, e) {
                                    if (!this.items[e]) throw new Error("Index " + e + " is out of bounds");
                                    return t.valid && !this.valid && this.resize(t.width, t.height), this.items[e].setResource(t), this
                                }, r.prototype.bind = function (r) {
                                    t.prototype.bind.call(this, r), r.target = e.TARGETS.TEXTURE_2D_ARRAY;
                                    for (var i = 0; i < this.length; i++) this.items[i].on("update", r.update, r)
                                }, r.prototype.unbind = function (e) {
                                    t.prototype.unbind.call(this, e);
                                    for (var r = 0; r < this.length; r++) this.items[r].off("update", e.update, e)
                                }, r.prototype.load = function () {
                                    var t = this;
                                    if (this._load) return this._load;
                                    var e = this.items.map((function (t) {
                                            return t.resource
                                        })),
                                        r = e.map((function (t) {
                                            return t.load()
                                        }));
                                    return this._load = Promise.all(r).then((function () {
                                        var r = e[0],
                                            i = r.width,
                                            n = r.height;
                                        return t.resize(i, n), Promise.resolve(t)
                                    })), this._load
                                }, r.prototype.upload = function (t, e, r) {
                                    var i = this.length,
                                        n = this.itemDirtyIds,
                                        o = this.items,
                                        s = t.gl;
                                    r.dirtyId < 0 && s.texImage3D(s.TEXTURE_2D_ARRAY, 0, e.format, this._width, this._height, i, 0, e.format, e.type, null);
                                    for (var a = 0; a < i; a++) {
                                        var h = o[a];
                                        n[a] < h.dirtyId && (n[a] = h.dirtyId, h.valid && s.texSubImage3D(s.TEXTURE_2D_ARRAY, 0, 0, 0, a, h.resource.width, h.resource.height, 1, e.format, e.type, h.resource.source))
                                    }
                                    return !0
                                }, r
                            }(Nr),
                            Yr = function (t) {
                                function e() {
                                    t.apply(this, arguments), this.type = "canvas"
                                }
                                return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.test = function (t) {
                                    var e = o.a.OffscreenCanvas;
                                    return !!(e && t instanceof e) || "canvas" == t.type
                                }, e
                            }(Fr),
                            zr = function (t) {
                                function r(i, n) {
                                    if (n = n || {}, t.call(this, i, n), this.length !== r.SIDES) throw new Error("Invalid length. Got " + this.length + ", expected 6");
                                    for (var o = 0; o < r.SIDES; o++) this.items[o].target = e.TARGETS.TEXTURE_CUBE_MAP_POSITIVE_X + o;
                                    !1 !== n.autoLoad && this.load()
                                }
                                return t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r, r.prototype.bind = function (r) {
                                    t.prototype.bind.call(this, r), r.target = e.TARGETS.TEXTURE_CUBE_MAP
                                }, r.prototype.upload = function (t, e, i) {
                                    for (var n = this.itemDirtyIds, o = 0; o < r.SIDES; o++) {
                                        var s = this.items[o];
                                        n[o] < s.dirtyId && (n[o] = s.dirtyId, s.valid && s.resource.upload(t, s, i))
                                    }
                                    return !0
                                }, r
                            }(Gr);
                        zr.SIDES = 6;
                        var Vr = function (t) {
                            function e(e, r) {
                                r = r || {}, t.call(this, v.createElement("canvas")), this._width = 0, this._height = 0, this.svg = e, this.scale = r.scale || 1, this._overrideWidth = r.width, this._overrideHeight = r.height, this._resolve = null, this._crossorigin = r.crossorigin, this._load = null, !1 !== r.autoLoad && this.load()
                            }
                            return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.load = function () {
                                var t = this;
                                return this._load || (this._load = new Promise((function (e) {
                                    if (t._resolve = function () {
                                            t.resize(t.source.width, t.source.height), e(t)
                                        }, /^\<svg/.test(t.svg.trim())) {
                                        if (!btoa) throw new Error("Your browser doesn't support base64 conversions.");
                                        t.svg = "data:image/svg+xml;base64," + btoa(unescape(encodeURIComponent(t.svg)))
                                    }
                                    t._loadSvg()
                                }))), this._load
                            }, e.prototype._loadSvg = function () {
                                var e = this,
                                    r = new g;
                                t.crossOrigin(r, this.svg, this._crossorigin), r.src = this.svg, r.onerror = function (t) {
                                    r.onerror = null, e.onError.run(t)
                                }, r.onload = function () {
                                    var t = r.width,
                                        i = r.height;
                                    if (!t || !i) throw new Error("The SVG image must have width and height defined (in pixels), canvas API needs them.");
                                    var n = t * e.scale,
                                        o = i * e.scale;
                                    (e._overrideWidth || e._overrideHeight) && (n = e._overrideWidth || e._overrideHeight / i * t, o = e._overrideHeight || e._overrideWidth / t * i), n = Math.round(n), o = Math.round(o);
                                    var s = e.source;
                                    s.width = n, s.height = o, s._pixiId = "canvas_" + Me(), s.getContext("2d").drawImage(r, 0, 0, t, i, 0, 0, n, o), e._resolve(), e._resolve = null
                                }
                            }, e.getSize = function (t) {
                                var r = e.SVG_SIZE.exec(t),
                                    i = {};
                                return r && (i[r[1]] = Math.round(parseFloat(r[3])), i[r[5]] = Math.round(parseFloat(r[7]))), i
                            }, e.prototype.dispose = function () {
                                t.prototype.dispose.call(this), this._resolve = null, this._crossorigin = null
                            }, e.test = function (t, e) {
                                return "svg" === e || "string" == typeof t && 0 === t.indexOf("data:image/svg+xml;base64") || "string" == typeof t && 0 === t.indexOf("<svg")
                            }, e
                        }(Fr);
                        Vr.SVG_SIZE = /<svg[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i;
                        var Wr = function (t) {
                            function e(e, r) {
                                if (r = r || {}, !(e instanceof p)) {
                                    var i = v.createElement("video");
                                    i.setAttribute("preload", "auto"), i.setAttribute("webkit-playsinline", ""), i.setAttribute("playsinline", ""), "string" == typeof e && (e = [e]), t.crossOrigin(i, e[0].src || e[0], r.crossorigin);
                                    for (var n = 0; n < e.length; ++n) {
                                        var o = v.createElement("source"),
                                            s = e[n],
                                            a = s.src,
                                            h = s.mime,
                                            u = (a = a || e[n]).split("?").shift().toLowerCase(),
                                            l = u.substr(u.lastIndexOf(".") + 1);
                                        h = h || "video/" + l, o.src = a, o.type = h, i.appendChild(o)
                                    }
                                    e = i
                                }
                                t.call(this, e), this.noSubImage = !0, this._autoUpdate = !0, this._isAutoUpdating = !1, this._updateFPS = r.updateFPS || 0, this._msToNextUpdate = 0, this.autoPlay = !1 !== r.autoPlay, this._load = null, this._resolve = null, this._onCanPlay = this._onCanPlay.bind(this), this._onError = this._onError.bind(this), !1 !== r.autoLoad && this.load()
                            }
                            t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
                            var r = {
                                autoUpdate: {
                                    configurable: !0
                                },
                                updateFPS: {
                                    configurable: !0
                                }
                            };
                            return e.prototype.update = function (e) {
                                if (void 0 === e && (e = 0), !this.destroyed) {
                                    var r = br.shared.elapsedMS * this.source.playbackRate;
                                    this._msToNextUpdate = Math.floor(this._msToNextUpdate - r), (!this._updateFPS || this._msToNextUpdate <= 0) && (t.prototype.update.call(this, e), this._msToNextUpdate = this._updateFPS ? Math.floor(1e3 / this._updateFPS) : 0)
                                }
                            }, e.prototype.load = function () {
                                var t = this;
                                if (this._load) return this._load;
                                var e = this.source;
                                return (e.readyState === e.HAVE_ENOUGH_DATA || e.readyState === e.HAVE_FUTURE_DATA) && e.width && e.height && (e.complete = !0), e.addEventListener("play", this._onPlayStart.bind(this)), e.addEventListener("pause", this._onPlayStop.bind(this)), this._isSourceReady() ? this._onCanPlay() : (e.addEventListener("canplay", this._onCanPlay), e.addEventListener("canplaythrough", this._onCanPlay), e.addEventListener("error", this._onError, !0)), this._load = new Promise((function (r) {
                                    t.valid ? r(t) : (t._resolve = r, e.load())
                                })), this._load
                            }, e.prototype._onError = function () {
                                this.source.removeEventListener("error", this._onError, !0), this.onError.run(event)
                            }, e.prototype._isSourcePlaying = function () {
                                var t = this.source;
                                return t.currentTime > 0 && !1 === t.paused && !1 === t.ended && t.readyState > 2
                            }, e.prototype._isSourceReady = function () {
                                return 3 === this.source.readyState || 4 === this.source.readyState
                            }, e.prototype._onPlayStart = function () {
                                this.valid || this._onCanPlay(), !this._isAutoUpdating && this.autoUpdate && (br.shared.add(this.update, this), this._isAutoUpdating = !0)
                            }, e.prototype._onPlayStop = function () {
                                this._isAutoUpdating && (br.shared.remove(this.update, this), this._isAutoUpdating = !1)
                            }, e.prototype._onCanPlay = function () {
                                var t = this.source;
                                t.removeEventListener("canplay", this._onCanPlay), t.removeEventListener("canplaythrough", this._onCanPlay);
                                var e = this.valid;
                                this.resize(t.videoWidth, t.videoHeight), !e && this._resolve && (this._resolve(this), this._resolve = null), this._isSourcePlaying() ? this._onPlayStart() : this.autoPlay && t.play()
                            }, e.prototype.dispose = function () {
                                this._isAutoUpdating && br.shared.remove(this.update, this), this.source && (this.source.removeEventListener("error", this._onError, !0), this.source.pause(), this.source.src = "", this.source.load()), t.prototype.dispose.call(this)
                            }, r.autoUpdate.get = function () {
                                return this._autoUpdate
                            }, r.autoUpdate.set = function (t) {
                                t !== this._autoUpdate && (this._autoUpdate = t, !this._autoUpdate && this._isAutoUpdating ? (br.shared.remove(this.update, this), this._isAutoUpdating = !1) : this._autoUpdate && !this._isAutoUpdating && (br.shared.add(this.update, this), this._isAutoUpdating = !0))
                            }, r.updateFPS.get = function () {
                                return this._updateFPS
                            }, r.updateFPS.set = function (t) {
                                t !== this._updateFPS && (this._updateFPS = t)
                            }, e.test = function (t, r) {
                                return t instanceof p || e.TYPES.indexOf(r) > -1
                            }, Object.defineProperties(e.prototype, r), e
                        }(Fr);
                        Wr.TYPES = ["mp4", "m4v", "webm", "ogg", "ogv", "h264", "avi", "mov"];
                        var qr = function (t) {
                            function e() {
                                t.apply(this, arguments)
                            }
                            return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.test = function (t) {
                                return !!o.a.createImageBitmap && t instanceof ImageBitmap
                            }, e
                        }(Fr);
                        Ur.push(Br, qr, Yr, Wr, Vr, Xr, zr, Gr);
                        var Kr = {
                                INSTALLED: Ur,
                                autoDetectResource: kr,
                                ArrayResource: Gr,
                                BufferResource: Xr,
                                CanvasResource: Yr,
                                CubeResource: zr,
                                ImageResource: Br,
                                ImageBitmapResource: qr,
                                SVGResource: Vr,
                                VideoResource: Wr,
                                Resource: Nr,
                                BaseImageResource: Fr
                            },
                            Zr = function (t) {
                                this.renderer = t
                            };
                        Zr.prototype.destroy = function () {
                            this.renderer = null
                        };
                        var $r = function (t) {
                                function r() {
                                    t.apply(this, arguments)
                                }
                                return t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r, r.prototype.upload = function (t, r, i) {
                                    var n = t.gl;
                                    return n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL, r.alphaMode === e.ALPHA_MODES.UNPACK), i.width === r.width && i.height === r.height ? n.texSubImage2D(r.target, 0, 0, 0, r.width, r.height, r.format, r.type, this.data) : (i.width = r.width, i.height = r.height, n.texImage2D(r.target, 0, n.DEPTH_COMPONENT16, r.width, r.height, 0, r.format, r.type, this.data)), !0
                                }, r
                            }(Xr),
                            Jr = function (t, e) {
                                this.width = Math.ceil(t || 100), this.height = Math.ceil(e || 100), this.stencil = !1, this.depth = !1, this.dirtyId = 0, this.dirtyFormat = 0, this.dirtySize = 0, this.depthTexture = null, this.colorTextures = [], this.glFramebuffers = {}, this.disposeRunner = new Rr("disposeFramebuffer", 2)
                            },
                            Qr = {
                                colorTexture: {
                                    configurable: !0
                                }
                            };
                        Qr.colorTexture.get = function () {
                            return this.colorTextures[0]
                        }, Jr.prototype.addColorTexture = function (t, e) {
                            return void 0 === t && (t = 0), this.colorTextures[t] = e || new Hr(null, {
                                scaleMode: 0,
                                resolution: 1,
                                mipmap: !1,
                                width: this.width,
                                height: this.height
                            }), this.dirtyId++, this.dirtyFormat++, this
                        }, Jr.prototype.addDepthTexture = function (t) {
                            return this.depthTexture = t || new Hr(new $r(null, {
                                width: this.width,
                                height: this.height
                            }), {
                                scaleMode: 0,
                                resolution: 1,
                                width: this.width,
                                height: this.height,
                                mipmap: !1,
                                format: e.FORMATS.DEPTH_COMPONENT,
                                type: e.TYPES.UNSIGNED_SHORT
                            }), this.dirtyId++, this.dirtyFormat++, this
                        }, Jr.prototype.enableDepth = function () {
                            return this.depth = !0, this.dirtyId++, this.dirtyFormat++, this
                        }, Jr.prototype.enableStencil = function () {
                            return this.stencil = !0, this.dirtyId++, this.dirtyFormat++, this
                        }, Jr.prototype.resize = function (t, e) {
                            if (t = Math.ceil(t), e = Math.ceil(e), t !== this.width || e !== this.height) {
                                this.width = t, this.height = e, this.dirtyId++, this.dirtySize++;
                                for (var r = 0; r < this.colorTextures.length; r++) {
                                    var i = this.colorTextures[r],
                                        n = i.resolution;
                                    i.setSize(t / n, e / n)
                                }
                                if (this.depthTexture) {
                                    var o = this.depthTexture.resolution;
                                    this.depthTexture.setSize(t / o, e / o)
                                }
                            }
                        }, Jr.prototype.dispose = function () {
                            this.disposeRunner.run(this, !1)
                        }, Object.defineProperties(Jr.prototype, Qr);
                        var ti = function (t) {
                                function e(e) {
                                    if ("number" == typeof e) {
                                        var r = arguments[0],
                                            i = arguments[1],
                                            n = arguments[2],
                                            o = arguments[3];
                                        e = {
                                            width: r,
                                            height: i,
                                            scaleMode: n,
                                            resolution: o
                                        }
                                    }
                                    t.call(this, null, e);
                                    var s = e || {},
                                        a = s.width,
                                        h = s.height;
                                    this.mipmap = !1, this.width = Math.ceil(a) || 100, this.height = Math.ceil(h) || 100, this.valid = !0, this._canvasRenderTarget = null, this.clearColor = [0, 0, 0, 0], this.framebuffer = new Jr(this.width * this.resolution, this.height * this.resolution).addColorTexture(0, this), this.maskStack = [], this.filterStack = [{}]
                                }
                                return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.resize = function (t, e) {
                                    t = Math.ceil(t), e = Math.ceil(e), this.framebuffer.resize(t * this.resolution, e * this.resolution)
                                }, e.prototype.dispose = function () {
                                    this.framebuffer.dispose(), t.prototype.dispose.call(this)
                                }, e.prototype.destroy = function () {
                                    t.prototype.destroy.call(this, !0), this.framebuffer = null
                                }, e
                            }(Hr),
                            ei = function () {
                                this.x0 = 0, this.y0 = 0, this.x1 = 1, this.y1 = 0, this.x2 = 1, this.y2 = 1, this.x3 = 0, this.y3 = 1, this.uvsFloat32 = new Float32Array(8)
                            };
                        ei.prototype.set = function (t, e, r) {
                            var i = e.width,
                                n = e.height;
                            if (r) {
                                var o = t.width / 2 / i,
                                    s = t.height / 2 / n,
                                    a = t.x / i + o,
                                    h = t.y / n + s;
                                r = or.add(r, or.NW), this.x0 = a + o * or.uX(r), this.y0 = h + s * or.uY(r), r = or.add(r, 2), this.x1 = a + o * or.uX(r), this.y1 = h + s * or.uY(r), r = or.add(r, 2), this.x2 = a + o * or.uX(r), this.y2 = h + s * or.uY(r), r = or.add(r, 2), this.x3 = a + o * or.uX(r), this.y3 = h + s * or.uY(r)
                            } else this.x0 = t.x / i, this.y0 = t.y / n, this.x1 = (t.x + t.width) / i, this.y1 = t.y / n, this.x2 = (t.x + t.width) / i, this.y2 = (t.y + t.height) / n, this.x3 = t.x / i, this.y3 = (t.y + t.height) / n;
                            this.uvsFloat32[0] = this.x0, this.uvsFloat32[1] = this.y0, this.uvsFloat32[2] = this.x1, this.uvsFloat32[3] = this.y1, this.uvsFloat32[4] = this.x2, this.uvsFloat32[5] = this.y2, this.uvsFloat32[6] = this.x3, this.uvsFloat32[7] = this.y3
                        };
                        var ri = new ei,
                            ii = function (t) {
                                function e(r, i, n, o, s, a) {
                                    if (t.call(this), this.noFrame = !1, i || (this.noFrame = !0, i = new ar(0, 0, 1, 1)), r instanceof e && (r = r.baseTexture), this.baseTexture = r, this._frame = i, this.trim = o, this.valid = !1, this.requiresUpdate = !1, this._uvs = ri, this.uvMatrix = null, this.orig = n || i, this._rotate = Number(s || 0), !0 === s) this._rotate = 2;
                                    else if (this._rotate % 2 != 0) throw new Error("attempt to use diamond-shaped UVs. If you are sure, set rotation manually");
                                    this.defaultAnchor = a ? new Ve(a.x, a.y) : new Ve(0, 0), this._updateID = 0, this.textureCacheIds = [], r.valid ? this.noFrame ? r.valid && this.onBaseTextureUpdated(r) : this.frame = i : r.once("loaded", this.onBaseTextureUpdated, this), this.noFrame && r.on("update", this.onBaseTextureUpdated, this)
                                }
                                t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
                                var r = {
                                    resolution: {
                                        configurable: !0
                                    },
                                    frame: {
                                        configurable: !0
                                    },
                                    rotate: {
                                        configurable: !0
                                    },
                                    width: {
                                        configurable: !0
                                    },
                                    height: {
                                        configurable: !0
                                    }
                                };
                                return e.prototype.update = function () {
                                    this.baseTexture.resource && this.baseTexture.resource.update()
                                }, e.prototype.onBaseTextureUpdated = function (t) {
                                    if (this.noFrame) {
                                        if (!this.baseTexture.valid) return;
                                        this._frame.width = t.width, this._frame.height = t.height, this.valid = !0, this.updateUvs()
                                    } else this.frame = this._frame;
                                    this.emit("update", this)
                                }, e.prototype.destroy = function (t) {
                                    if (this.baseTexture) {
                                        if (t) {
                                            var r = this.baseTexture.resource;
                                            r && Fe[r.url] && e.removeFromCache(r.url), this.baseTexture.destroy()
                                        }
                                        this.baseTexture.off("update", this.onBaseTextureUpdated, this), this.baseTexture = null
                                    }
                                    this._frame = null, this._uvs = null, this.trim = null, this.orig = null, this.valid = !1, e.removeFromCache(this), this.textureCacheIds = null
                                }, e.prototype.clone = function () {
                                    return new e(this.baseTexture, this.frame, this.orig, this.trim, this.rotate, this.defaultAnchor)
                                }, e.prototype.updateUvs = function () {
                                    this._uvs === ri && (this._uvs = new ei), this._uvs.set(this._frame, this.baseTexture, this.rotate), this._updateID++
                                }, e.from = function (t, r, i) {
                                    void 0 === r && (r = {}), void 0 === i && (i = V.STRICT_TEXTURE_CACHE);
                                    var n = "string" == typeof t,
                                        o = null;
                                    n ? o = t : (t._pixiId || (t._pixiId = "pixiid_" + Me()), o = t._pixiId);
                                    var s = Fe[o];
                                    if (n && i && !s) throw new Error('The cacheId "' + o + '" does not exist in TextureCache.');
                                    return s || (r.resolution || (r.resolution = Ge(t)), (s = new e(new Hr(t, r))).baseTexture.cacheId = o, Hr.addToCache(s.baseTexture, o), e.addToCache(s, o)), s
                                }, e.fromBuffer = function (t, r, i, n) {
                                    return new e(Hr.fromBuffer(t, r, i, n))
                                }, e.fromLoader = function (t, r, i) {
                                    var n = new Br(t);
                                    n.url = r;
                                    var o = new e(new Hr(n, {
                                        scaleMode: V.SCALE_MODE,
                                        resolution: Ge(r)
                                    }));
                                    return i || (i = r), Hr.addToCache(o.baseTexture, i), e.addToCache(o, i), i !== r && (Hr.addToCache(o.baseTexture, r), e.addToCache(o, r)), o
                                }, e.addToCache = function (t, e) {
                                    e && (-1 === t.textureCacheIds.indexOf(e) && t.textureCacheIds.push(e), Fe[e] && console.warn("Texture added to the cache with an id [" + e + "] that already had an entry"), Fe[e] = t)
                                }, e.removeFromCache = function (t) {
                                    if ("string" == typeof t) {
                                        var e = Fe[t];
                                        if (e) {
                                            var r = e.textureCacheIds.indexOf(t);
                                            return r > -1 && e.textureCacheIds.splice(r, 1), delete Fe[t], e
                                        }
                                    } else if (t && t.textureCacheIds) {
                                        for (var i = 0; i < t.textureCacheIds.length; ++i) Fe[t.textureCacheIds[i]] === t && delete Fe[t.textureCacheIds[i]];
                                        return t.textureCacheIds.length = 0, t
                                    }
                                    return null
                                }, r.resolution.get = function () {
                                    return this.baseTexture.resolution
                                }, r.frame.get = function () {
                                    return this._frame
                                }, r.frame.set = function (t) {
                                    this._frame = t, this.noFrame = !1;
                                    var e = t.x,
                                        r = t.y,
                                        i = t.width,
                                        n = t.height,
                                        o = e + i > this.baseTexture.width,
                                        s = r + n > this.baseTexture.height;
                                    if (o || s) {
                                        var a = o && s ? "and" : "or",
                                            h = "X: " + e + " + " + i + " = " + (e + i) + " > " + this.baseTexture.width,
                                            u = "Y: " + r + " + " + n + " = " + (r + n) + " > " + this.baseTexture.height;
                                        throw new Error("Texture Error: frame does not fit inside the base Texture dimensions: " + h + " " + a + " " + u)
                                    }
                                    this.valid = i && n && this.baseTexture.valid, this.trim || this.rotate || (this.orig = t), this.valid && this.updateUvs()
                                }, r.rotate.get = function () {
                                    return this._rotate
                                }, r.rotate.set = function (t) {
                                    this._rotate = t, this.valid && this.updateUvs()
                                }, r.width.get = function () {
                                    return this.orig.width
                                }, r.height.get = function () {
                                    return this.orig.height
                                }, Object.defineProperties(e.prototype, r), e
                            }(W);

                        function ni(t) {
                            t.destroy = function () {}, t.on = function () {}, t.once = function () {}, t.emit = function () {}
                        }
                        ii.EMPTY = new ii(new Hr), ni(ii.EMPTY), ni(ii.EMPTY.baseTexture), ii.WHITE = function () {
                            var t = v.createElement("canvas2d");
                            t.width = 16, t.height = 16, t.type = "canvas";
                            var e = t.getContext("2d");
                            return e.fillStyle = "white", e.fillRect(0, 0, 16, 16), new ii(new Hr(new Yr(t)))
                        }(), ni(ii.WHITE), ni(ii.WHITE.baseTexture);
                        var oi = function (t) {
                                function e(e, r) {
                                    var i = null;
                                    if (!(e instanceof ti)) {
                                        var n = arguments[1],
                                            o = arguments[2],
                                            s = arguments[3],
                                            a = arguments[4];
                                        console.warn("Please use RenderTexture.create(" + n + ", " + o + ") instead of the ctor directly."), i = arguments[0], r = null, e = new ti({
                                            width: n,
                                            height: o,
                                            scaleMode: s,
                                            resolution: a
                                        })
                                    }
                                    t.call(this, e, r), this.legacyRenderer = i, this.valid = !0, this.filterFrame = null, this.filterPoolKey = null, this.updateUvs()
                                }
                                return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.resize = function (t, e, r) {
                                    void 0 === r && (r = !0), t = Math.ceil(t), e = Math.ceil(e), this.valid = t > 0 && e > 0, this._frame.width = this.orig.width = t, this._frame.height = this.orig.height = e, r && this.baseTexture.resize(t, e), this.updateUvs()
                                }, e.prototype.setResolution = function (t) {
                                    var e = this.baseTexture;
                                    e.resolution !== t && (e.setResolution(t), this.resize(e.width, e.height, !1))
                                }, e.create = function (t) {
                                    return "number" == typeof t && (t = {
                                        width: t,
                                        height: arguments[1],
                                        scaleMode: arguments[2],
                                        resolution: arguments[3]
                                    }), new e(new ti(t))
                                }, e
                            }(ii),
                            si = function (t) {
                                this.texturePool = {}, this.textureOptions = t || {}, this.enableFullScreen = !1, this._pixelsWidth = 0, this._pixelsHeight = 0
                            };
                        si.prototype.createTexture = function (t, e) {
                            var r = new ti(Object.assign({
                                width: t,
                                height: e,
                                resolution: 1
                            }, this.textureOptions));
                            return new oi(r)
                        }, si.prototype.getOptimalTexture = function (t, e, r) {
                            void 0 === r && (r = 1);
                            var i = si.SCREEN_KEY;
                            t *= r, e *= r, this.enableFullScreen && t === this._pixelsWidth && e === this._pixelsHeight || (i = (65535 & (t = Ie(t))) << 16 | 65535 & (e = Ie(e))), this.texturePool[i] || (this.texturePool[i] = []);
                            var n = this.texturePool[i].pop();
                            return n || (n = this.createTexture(t, e)), n.filterPoolKey = i, n.setResolution(r), n
                        }, si.prototype.getFilterTexture = function (t, e) {
                            var r = this.getOptimalTexture(t.width, t.height, e || t.resolution);
                            return r.filterFrame = t.filterFrame, r
                        }, si.prototype.returnTexture = function (t) {
                            var e = t.filterPoolKey;
                            t.filterFrame = null, this.texturePool[e].push(t)
                        }, si.prototype.returnFilterTexture = function (t) {
                            this.returnTexture(t)
                        }, si.prototype.clear = function (t) {
                            if (t = !1 !== t)
                                for (var e in this.texturePool) {
                                    var r = this.texturePool[e];
                                    if (r)
                                        for (var i = 0; i < r.length; i++) r[i].destroy(!0)
                                }
                            this.texturePool = {}
                        }, si.prototype.setScreenSize = function (t) {
                            if (t.width !== this._pixelsWidth || t.height !== this._pixelsHeight) {
                                var e = si.SCREEN_KEY,
                                    r = this.texturePool[e];
                                if (this.enableFullScreen = t.width > 0 && t.height > 0, r)
                                    for (var i = 0; i < r.length; i++) r[i].destroy(!0);
                                this.texturePool[e] = [], this._pixelsWidth = t.width, this._pixelsHeight = t.height
                            }
                        }, si.SCREEN_KEY = "screen";
                        var ai = function (t, e, r, i, n, o, s) {
                            void 0 === r && (r = !1), void 0 === i && (i = 5126), this.buffer = t, this.size = e, this.normalized = r, this.type = i, this.stride = n, this.start = o, this.instance = s
                        };
                        ai.prototype.destroy = function () {
                            this.buffer = null
                        }, ai.from = function (t, e, r, i, n) {
                            return new ai(t, e, r, i, n)
                        };
                        var hi = 0,
                            ui = function (t, e, r) {
                                void 0 === e && (e = !0), void 0 === r && (r = !1), this.data = t || new Float32Array(1), this._glBuffers = {}, this._updateID = 0, this.index = r, this.static = e, this.id = hi++, this.disposeRunner = new Rr("disposeBuffer", 2)
                            };

                        function li(t) {
                            if (4 === t.BYTES_PER_ELEMENT) return t instanceof Float32Array ? "Float32Array" : t instanceof Uint32Array ? "Uint32Array" : "Int32Array";
                            if (2 === t.BYTES_PER_ELEMENT) {
                                if (t instanceof Uint16Array) return "Uint16Array"
                            } else if (1 === t.BYTES_PER_ELEMENT && t instanceof Uint8Array) return "Uint8Array";
                            return null
                        }
                        ui.prototype.update = function (t) {
                            this.data = t || this.data, this._updateID++
                        }, ui.prototype.dispose = function () {
                            this.disposeRunner.run(this, !1)
                        }, ui.prototype.destroy = function () {
                            this.dispose(), this.data = null
                        }, ui.from = function (t) {
                            return t instanceof Array && (t = new Float32Array(t)), new ui(t)
                        };
                        var ci = {
                            Float32Array: Float32Array,
                            Uint32Array: Uint32Array,
                            Int32Array: Int32Array,
                            Uint8Array: Uint8Array
                        };
                        var di = {
                                5126: 4,
                                5123: 2,
                                5121: 1
                            },
                            pi = 0,
                            fi = {
                                Float32Array: Float32Array,
                                Uint32Array: Uint32Array,
                                Int32Array: Int32Array,
                                Uint8Array: Uint8Array,
                                Uint16Array: Uint16Array
                            },
                            mi = function (t, e) {
                                void 0 === t && (t = []), void 0 === e && (e = {}), this.buffers = t, this.indexBuffer = null, this.attributes = e, this.glVertexArrayObjects = {}, this.id = pi++, this.instanced = !1, this.instanceCount = 1, this.disposeRunner = new Rr("disposeGeometry", 2), this.refCount = 0
                            };
                        mi.prototype.addAttribute = function (t, e, r, i, n, o, s, a) {
                            if (void 0 === i && (i = !1), void 0 === a && (a = !1), !e) throw new Error("You must pass a buffer when creating an attribute");
                            e.data || (e instanceof Array && (e = new Float32Array(e)), e = new ui(e));
                            var h = t.split("|");
                            if (h.length > 1) {
                                for (var u = 0; u < h.length; u++) this.addAttribute(h[u], e, r, i, n);
                                return this
                            }
                            var l = this.buffers.indexOf(e);
                            return -1 === l && (this.buffers.push(e), l = this.buffers.length - 1), this.attributes[t] = new ai(l, r, i, n, o, s, a), this.instanced = this.instanced || a, this
                        }, mi.prototype.getAttribute = function (t) {
                            return this.attributes[t]
                        }, mi.prototype.getBuffer = function (t) {
                            return this.buffers[this.getAttribute(t).buffer]
                        }, mi.prototype.addIndex = function (t) {
                            return t.data || (t instanceof Array && (t = new Uint16Array(t)), t = new ui(t)), t.index = !0, this.indexBuffer = t, -1 === this.buffers.indexOf(t) && this.buffers.push(t), this
                        }, mi.prototype.getIndex = function () {
                            return this.indexBuffer
                        }, mi.prototype.interleave = function () {
                            if (1 === this.buffers.length || 2 === this.buffers.length && this.indexBuffer) return this;
                            var t, e = [],
                                r = [],
                                i = new ui;
                            for (t in this.attributes) {
                                var n = this.attributes[t],
                                    o = this.buffers[n.buffer];
                                e.push(o.data), r.push(n.size * di[n.type] / 4), n.buffer = 0
                            }
                            for (i.data = function (t, e) {
                                    for (var r = 0, i = 0, n = {}, o = 0; o < t.length; o++) i += e[o], r += t[o].length;
                                    for (var s = new ArrayBuffer(4 * r), a = null, h = 0, u = 0; u < t.length; u++) {
                                        var l = e[u],
                                            c = t[u],
                                            d = li(c);
                                        n[d] || (n[d] = new ci[d](s)), a = n[d];
                                        for (var p = 0; p < c.length; p++) {
                                            a[(p / l | 0) * i + h + p % l] = c[p]
                                        }
                                        h += l
                                    }
                                    return new Float32Array(s)
                                }(e, r), t = 0; t < this.buffers.length; t++) this.buffers[t] !== this.indexBuffer && this.buffers[t].destroy();
                            return this.buffers = [i], this.indexBuffer && this.buffers.push(this.indexBuffer), this
                        }, mi.prototype.getSize = function () {
                            for (var t in this.attributes) {
                                var e = this.attributes[t];
                                return this.buffers[e.buffer].data.length / (e.stride / 4 || e.size)
                            }
                            return 0
                        }, mi.prototype.dispose = function () {
                            this.disposeRunner.run(this, !1)
                        }, mi.prototype.destroy = function () {
                            this.dispose(), this.buffers = null, this.indexBuffer = null, this.attributes = null
                        }, mi.prototype.clone = function () {
                            for (var t = new mi, e = 0; e < this.buffers.length; e++) t.buffers[e] = new ui(this.buffers[e].data.slice());
                            for (var r in this.attributes) {
                                var i = this.attributes[r];
                                t.attributes[r] = new ai(i.buffer, i.size, i.normalized, i.type, i.stride, i.start, i.instance)
                            }
                            return this.indexBuffer && (t.indexBuffer = t.buffers[this.buffers.indexOf(this.indexBuffer)], t.indexBuffer.index = !0), t
                        }, mi.merge = function (t) {
                            for (var e, r = new mi, i = [], n = [], o = [], s = 0; s < t.length; s++) {
                                e = t[s];
                                for (var a = 0; a < e.buffers.length; a++) n[a] = n[a] || 0, n[a] += e.buffers[a].data.length, o[a] = 0
                            }
                            for (var h = 0; h < e.buffers.length; h++) i[h] = new(fi[li(e.buffers[h].data)])(n[h]), r.buffers[h] = new ui(i[h]);
                            for (var u = 0; u < t.length; u++) {
                                e = t[u];
                                for (var l = 0; l < e.buffers.length; l++) i[l].set(e.buffers[l].data, o[l]), o[l] += e.buffers[l].data.length
                            }
                            if (r.attributes = e.attributes, e.indexBuffer) {
                                r.indexBuffer = r.buffers[e.buffers.indexOf(e.indexBuffer)], r.indexBuffer.index = !0;
                                for (var c = 0, d = 0, p = 0, f = 0, m = 0; m < e.buffers.length; m++)
                                    if (e.buffers[m] !== e.indexBuffer) {
                                        f = m;
                                        break
                                    } for (var g in e.attributes) {
                                    var v = e.attributes[g];
                                    (0 | v.buffer) === f && (d += v.size * di[v.type] / 4)
                                }
                                for (var y = 0; y < t.length; y++) {
                                    for (var _ = t[y].indexBuffer.data, x = 0; x < _.length; x++) r.indexBuffer.data[x + p] += c;
                                    c += e.buffers[f].data.length / d, p += _.length
                                }
                            }
                            return r
                        };
                        var gi = function (t) {
                                function e() {
                                    t.call(this), this.addAttribute("aVertexPosition", [0, 0, 1, 0, 1, 1, 0, 1]).addIndex([0, 1, 3, 2])
                                }
                                return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e
                            }(mi),
                            vi = function (t) {
                                function e() {
                                    t.call(this), this.vertices = new Float32Array([-1, -1, 1, -1, 1, 1, -1, 1]), this.uvs = new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]), this.vertexBuffer = new ui(this.vertices), this.uvBuffer = new ui(this.uvs), this.addAttribute("aVertexPosition", this.vertexBuffer).addAttribute("aTextureCoord", this.uvBuffer).addIndex([0, 1, 2, 0, 2, 3])
                                }
                                return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.map = function (t, e) {
                                    var r = 0,
                                        i = 0;
                                    return this.uvs[0] = r, this.uvs[1] = i, this.uvs[2] = r + e.width / t.width, this.uvs[3] = i, this.uvs[4] = r + e.width / t.width, this.uvs[5] = i + e.height / t.height, this.uvs[6] = r, this.uvs[7] = i + e.height / t.height, r = e.x, i = e.y, this.vertices[0] = r, this.vertices[1] = i, this.vertices[2] = r + e.width, this.vertices[3] = i, this.vertices[4] = r + e.width, this.vertices[5] = i + e.height, this.vertices[6] = r, this.vertices[7] = i + e.height, this.invalidate(), this
                                }, e.prototype.invalidate = function () {
                                    return this.vertexBuffer._updateID++, this.uvBuffer._updateID++, this
                                }, e
                            }(mi),
                            yi = 0,
                            _i = function (t, e) {
                                this.uniforms = t, this.group = !0, this.syncUniforms = {}, this.dirtyId = 0, this.id = yi++, this.static = !!e
                            };
                        _i.prototype.update = function () {
                            this.dirtyId++
                        }, _i.prototype.add = function (t, e, r) {
                            this.uniforms[t] = new _i(e, r)
                        }, _i.from = function (t, e) {
                            return new _i(t, e)
                        };
                        var xi = function () {
                            this.renderTexture = null, this.target = null, this.legacy = !1, this.resolution = 1, this.sourceFrame = new ar, this.destinationFrame = new ar, this.filters = []
                        };
                        xi.prototype.clear = function () {
                            this.target = null, this.filters = null, this.renderTexture = null
                        };
                        var bi = function (t) {
                                function r(e) {
                                    t.call(this, e), this.defaultFilterStack = [{}], this.texturePool = new si, this.texturePool.setScreenSize(e.view), this.statePool = [], this.quad = new gi, this.quadUv = new vi, this.tempRect = new ar, this.activeState = {}, this.globalUniforms = new _i({
                                        outputFrame: this.tempRect,
                                        inputSize: new Float32Array(4),
                                        inputPixel: new Float32Array(4),
                                        inputClamp: new Float32Array(4),
                                        resolution: 1,
                                        filterArea: new Float32Array(4),
                                        filterClamp: new Float32Array(4)
                                    }, !0), this._pixelsWidth = e.view.width, this._pixelsHeight = e.view.height
                                }
                                return t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r, r.prototype.push = function (t, e) {
                                    for (var r = this.renderer, i = this.defaultFilterStack, n = this.statePool.pop() || new xi, o = e[0].resolution, s = e[0].padding, a = e[0].autoFit, h = e[0].legacy, u = 1; u < e.length; u++) {
                                        var l = e[u];
                                        o = Math.min(o, l.resolution), s = Math.max(s, l.padding), a = a || l.autoFit, h = h || l.legacy
                                    }
                                    1 === i.length && (this.defaultFilterStack[0].renderTexture = r.renderTexture.current), i.push(n), n.resolution = o, n.legacy = h, n.target = t, n.sourceFrame.copyFrom(t.filterArea || t.getBounds(!0)), n.sourceFrame.pad(s), a && n.sourceFrame.fit(this.renderer.renderTexture.sourceFrame), n.sourceFrame.ceil(o), n.renderTexture = this.getOptimalFilterTexture(n.sourceFrame.width, n.sourceFrame.height, o), n.filters = e, n.destinationFrame.width = n.renderTexture.width, n.destinationFrame.height = n.renderTexture.height, n.renderTexture.filterFrame = n.sourceFrame, r.renderTexture.bind(n.renderTexture, n.sourceFrame), r.renderTexture.clear()
                                }, r.prototype.pop = function () {
                                    var t = this.defaultFilterStack,
                                        e = t.pop(),
                                        r = e.filters;
                                    this.activeState = e;
                                    var i = this.globalUniforms.uniforms;
                                    i.outputFrame = e.sourceFrame, i.resolution = e.resolution;
                                    var n = i.inputSize,
                                        o = i.inputPixel,
                                        s = i.inputClamp;
                                    if (n[0] = e.destinationFrame.width, n[1] = e.destinationFrame.height, n[2] = 1 / n[0], n[3] = 1 / n[1], o[0] = n[0] * e.resolution, o[1] = n[1] * e.resolution, o[2] = 1 / o[0], o[3] = 1 / o[1], s[0] = .5 * o[2], s[1] = .5 * o[3], s[2] = e.sourceFrame.width * n[2] - .5 * o[2], s[3] = e.sourceFrame.height * n[3] - .5 * o[3], e.legacy) {
                                        var a = i.filterArea;
                                        a[0] = e.destinationFrame.width, a[1] = e.destinationFrame.height, a[2] = e.sourceFrame.x, a[3] = e.sourceFrame.y, i.filterClamp = i.inputClamp
                                    }
                                    this.globalUniforms.update();
                                    var h = t[t.length - 1];
                                    if (1 === r.length) r[0].apply(this, e.renderTexture, h.renderTexture, !1, e), this.returnFilterTexture(e.renderTexture);
                                    else {
                                        var u = e.renderTexture,
                                            l = this.getOptimalFilterTexture(u.width, u.height, e.resolution);
                                        l.filterFrame = u.filterFrame;
                                        var c = 0;
                                        for (c = 0; c < r.length - 1; ++c) {
                                            r[c].apply(this, u, l, !0, e);
                                            var d = u;
                                            u = l, l = d
                                        }
                                        r[c].apply(this, u, h.renderTexture, !1, e), this.returnFilterTexture(u), this.returnFilterTexture(l)
                                    }
                                    e.clear(), this.statePool.push(e)
                                }, r.prototype.applyFilter = function (t, r, i, n) {
                                    var o = this.renderer;
                                    o.renderTexture.bind(i, i ? i.filterFrame : null), n && o.renderTexture.clear(), t.uniforms.uSampler = r, t.uniforms.filterGlobals = this.globalUniforms, o.state.set(t.state), o.shader.bind(t), t.legacy ? (this.quadUv.map(r._frame, r.filterFrame), o.geometry.bind(this.quadUv), o.geometry.draw(e.DRAW_MODES.TRIANGLES)) : (o.geometry.bind(this.quad), o.geometry.draw(e.DRAW_MODES.TRIANGLE_STRIP))
                                }, r.prototype.calculateSpriteMatrix = function (t, e) {
                                    var r = this.activeState,
                                        i = r.sourceFrame,
                                        n = r.destinationFrame,
                                        o = e._texture.orig,
                                        s = t.set(n.width, 0, 0, n.height, i.x, i.y),
                                        a = e.worldTransform.copyTo($e.TEMP_MATRIX);
                                    return a.invert(), s.prepend(a), s.scale(1 / o.width, 1 / o.height), s.translate(e.anchor.x, e.anchor.y), s
                                }, r.prototype.destroy = function () {
                                    this.texturePool.clear(!1)
                                }, r.prototype.getOptimalFilterTexture = function (t, e, r) {
                                    return void 0 === r && (r = 1), this.texturePool.getOptimalTexture(t, e, r)
                                }, r.prototype.getFilterTexture = function (t, e) {
                                    if ("number" == typeof t) {
                                        var r = t;
                                        t = e, e = r
                                    }
                                    t = t || this.activeState.renderTexture;
                                    var i = this.texturePool.getOptimalTexture(t.width, t.height, e || t.resolution);
                                    return i.filterFrame = t.filterFrame, i
                                }, r.prototype.returnFilterTexture = function (t) {
                                    this.texturePool.returnTexture(t)
                                }, r.prototype.emptyPool = function () {
                                    this.texturePool.clear(!0)
                                }, r.prototype.resize = function () {
                                    this.texturePool.setScreenSize(this.renderer.view)
                                }, r
                            }(Zr),
                            Ei = function (t) {
                                this.renderer = t
                            };
                        Ei.prototype.flush = function () {}, Ei.prototype.destroy = function () {
                            this.renderer = null
                        }, Ei.prototype.start = function () {}, Ei.prototype.stop = function () {
                            this.flush()
                        }, Ei.prototype.render = function (t) {};
                        var Ti = function (t) {
                            function e(e) {
                                t.call(this, e), this.emptyRenderer = new Ei(e), this.currentRenderer = this.emptyRenderer
                            }
                            return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.setObjectRenderer = function (t) {
                                this.currentRenderer !== t && (this.currentRenderer.stop(), this.currentRenderer = t, this.currentRenderer.start())
                            }, e.prototype.flush = function () {
                                this.setObjectRenderer(this.emptyRenderer)
                            }, e.prototype.reset = function () {
                                this.setObjectRenderer(this.emptyRenderer)
                            }, e.prototype.copyBoundTextures = function (t, e) {
                                for (var r = this.renderer.texture.boundTextures, i = e - 1; i >= 0; --i) t[i] = r[i] || null, t[i] && (t[i]._batchLocation = i)
                            }, e.prototype.boundArray = function (t, e, r, i) {
                                for (var n = t.elements, o = t.ids, s = t.count, a = 0, h = 0; h < s; h++) {
                                    var u = n[h],
                                        l = u._batchLocation;
                                    if (l >= 0 && l < i && e[l] === u) o[h] = l;
                                    else
                                        for (; a < i;) {
                                            var c = e[a];
                                            if (!c || c._batchEnabled !== r || c._batchLocation !== a) {
                                                o[h] = a, u._batchLocation = a, e[a] = u;
                                                break
                                            }
                                            a++
                                        }
                                }
                            }, e
                        }(Zr);
                        V.PREFER_ENV = z.any ? e.ENV.WEBGL : e.ENV.WEBGL2, V.STRICT_TEXTURE_CACHE = !1;
                        var wi = 0,
                            Si = function (t) {
                                function r(e) {
                                    t.call(this, e), this.webGLVersion = 1, this.extensions = {}, this.handleContextLost = this.handleContextLost.bind(this), this.handleContextRestored = this.handleContextRestored.bind(this), e.view.addEventListener("webglcontextlost", this.handleContextLost, !1), e.view.addEventListener("webglcontextrestored", this.handleContextRestored, !1)
                                }
                                t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r;
                                var i = {
                                    isLost: {
                                        configurable: !0
                                    }
                                };
                                return i.isLost.get = function () {
                                    return !this.gl || this.gl.isContextLost()
                                }, r.prototype.contextChange = function (t) {
                                    this.gl = t, this.renderer.gl = t, this.renderer.CONTEXT_UID = wi++, t.isContextLost() && t.getExtension("WEBGL_lose_context") && t.getExtension("WEBGL_lose_context").restoreContext()
                                }, r.prototype.initFromContext = function (t) {
                                    this.gl = t, this.validateContext(t), this.renderer.gl = t, this.renderer.CONTEXT_UID = wi++, this.renderer.runners.contextChange.run(t)
                                }, r.prototype.initFromOptions = function (t) {
                                    var e = this.createContext(this.renderer.view, t);
                                    this.initFromContext(e)
                                }, r.prototype.createContext = function (t, r) {
                                    var i;
                                    if (V.PREFER_ENV >= e.ENV.WEBGL2 && (i = t.getContext("webgl2", r)), i) this.webGLVersion = 2;
                                    else if (this.webGLVersion = 1, !(i = t.getContext("webgl", r) || t.getContext("experimental-webgl", r))) throw new Error("This browser does not support WebGL. Try using the canvas renderer");
                                    return this.gl = i, this.getExtensions(), i
                                }, r.prototype.getExtensions = function () {
                                    var t = this.gl;
                                    1 === this.webGLVersion ? Object.assign(this.extensions, {
                                        drawBuffers: t.getExtension("WEBGL_draw_buffers"),
                                        depthTexture: t.getExtension("WEBKIT_WEBGL_depth_texture"),
                                        loseContext: t.getExtension("WEBGL_lose_context"),
                                        vertexArrayObject: t.getExtension("OES_vertex_array_object") || t.getExtension("MOZ_OES_vertex_array_object") || t.getExtension("WEBKIT_OES_vertex_array_object"),
                                        anisotropicFiltering: t.getExtension("EXT_texture_filter_anisotropic"),
                                        uint32ElementIndex: t.getExtension("OES_element_index_uint"),
                                        floatTexture: t.getExtension("OES_texture_float"),
                                        floatTextureLinear: t.getExtension("OES_texture_float_linear"),
                                        textureHalfFloat: t.getExtension("OES_texture_half_float"),
                                        textureHalfFloatLinear: t.getExtension("OES_texture_half_float_linear")
                                    }) : 2 === this.webGLVersion && Object.assign(this.extensions, {
                                        anisotropicFiltering: t.getExtension("EXT_texture_filter_anisotropic"),
                                        colorBufferFloat: t.getExtension("EXT_color_buffer_float"),
                                        floatTextureLinear: t.getExtension("OES_texture_float_linear")
                                    })
                                }, r.prototype.handleContextLost = function (t) {
                                    t.preventDefault()
                                }, r.prototype.handleContextRestored = function () {
                                    this.renderer.runners.contextChange.run(this.gl)
                                }, r.prototype.destroy = function () {
                                    var t = this.renderer.view;
                                    t.removeEventListener("webglcontextlost", this.handleContextLost), t.removeEventListener("webglcontextrestored", this.handleContextRestored), this.gl.useProgram(null), this.extensions.loseContext && this.extensions.loseContext.loseContext()
                                }, r.prototype.postrender = function () {
                                    this.renderer.renderingToScreen && this.gl.flush()
                                }, r.prototype.validateContext = function (t) {
                                    t.getContextAttributes().stencil || console.warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly")
                                }, Object.defineProperties(r.prototype, i), r
                            }(Zr),
                            Ii = function (t) {
                                function r(e) {
                                    t.call(this, e), this.managedFramebuffers = [], this.unknownFramebuffer = new Jr(10, 10)
                                }
                                t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r;
                                var i = {
                                    size: {
                                        configurable: !0
                                    }
                                };
                                return r.prototype.contextChange = function () {
                                    var t = this.gl = this.renderer.gl;
                                    if (this.CONTEXT_UID = this.renderer.CONTEXT_UID, this.current = this.unknownFramebuffer, this.viewport = new ar, this.hasMRT = !0, this.writeDepthTexture = !0, this.disposeAll(!0), 1 === this.renderer.context.webGLVersion) {
                                        var r = this.renderer.context.extensions.drawBuffers,
                                            i = this.renderer.context.extensions.depthTexture;
                                        V.PREFER_ENV === e.ENV.WEBGL_LEGACY && (r = null, i = null), r ? t.drawBuffers = function (t) {
                                            return r.drawBuffersWEBGL(t)
                                        } : (this.hasMRT = !1, t.drawBuffers = function () {}), i || (this.writeDepthTexture = !1)
                                    }
                                }, r.prototype.bind = function (t, e) {
                                    var r = this.gl;
                                    if (t) {
                                        var i = t.glFramebuffers[this.CONTEXT_UID] || this.initFramebuffer(t);
                                        this.current !== t && (this.current = t, r.bindFramebuffer(r.FRAMEBUFFER, i.framebuffer)), i.dirtyId !== t.dirtyId && (i.dirtyId = t.dirtyId, i.dirtyFormat !== t.dirtyFormat ? (i.dirtyFormat = t.dirtyFormat, this.updateFramebuffer(t)) : i.dirtySize !== t.dirtySize && (i.dirtySize = t.dirtySize, this.resizeFramebuffer(t)));
                                        for (var n = 0; n < t.colorTextures.length; n++) t.colorTextures[n].texturePart ? this.renderer.texture.unbind(t.colorTextures[n].texture) : this.renderer.texture.unbind(t.colorTextures[n]);
                                        t.depthTexture && this.renderer.texture.unbind(t.depthTexture), e ? this.setViewport(e.x, e.y, e.width, e.height) : this.setViewport(0, 0, t.width, t.height)
                                    } else this.current && (this.current = null, r.bindFramebuffer(r.FRAMEBUFFER, null)), e ? this.setViewport(e.x, e.y, e.width, e.height) : this.setViewport(0, 0, this.renderer.width, this.renderer.height)
                                }, r.prototype.setViewport = function (t, e, r, i) {
                                    var n = this.viewport;
                                    n.width === r && n.height === i && n.x === t && n.y === e || (n.x = t, n.y = e, n.width = r, n.height = i, this.gl.viewport(t, e, r, i))
                                }, i.size.get = function () {
                                    return this.current ? {
                                        x: 0,
                                        y: 0,
                                        width: this.current.width,
                                        height: this.current.height
                                    } : {
                                        x: 0,
                                        y: 0,
                                        width: this.renderer.width,
                                        height: this.renderer.height
                                    }
                                }, r.prototype.clear = function (t, e, r, i) {
                                    var n = this.gl;
                                    n.clearColor(t, e, r, i), n.clear(n.COLOR_BUFFER_BIT | n.DEPTH_BUFFER_BIT)
                                }, r.prototype.initFramebuffer = function (t) {
                                    var e = {
                                        framebuffer: this.gl.createFramebuffer(),
                                        stencil: null,
                                        dirtyId: 0,
                                        dirtyFormat: 0,
                                        dirtySize: 0
                                    };
                                    return t.glFramebuffers[this.CONTEXT_UID] = e, this.managedFramebuffers.push(t), t.disposeRunner.add(this), e
                                }, r.prototype.resizeFramebuffer = function (t) {
                                    var e = this.gl,
                                        r = t.glFramebuffers[this.CONTEXT_UID];
                                    r.stencil && (e.bindRenderbuffer(e.RENDERBUFFER, r.stencil), e.renderbufferStorage(e.RENDERBUFFER, e.DEPTH_STENCIL, t.width, t.height));
                                    for (var i = t.colorTextures, n = 0; n < i.length; n++) this.renderer.texture.bind(i[n], 0);
                                    t.depthTexture && this.renderer.texture.bind(t.depthTexture, 0)
                                }, r.prototype.updateFramebuffer = function (t) {
                                    var e = this.gl,
                                        r = t.glFramebuffers[this.CONTEXT_UID],
                                        i = t.colorTextures.length;
                                    e.drawBuffers || (i = Math.min(i, 1));
                                    for (var n = [], o = 0; o < i; o++) {
                                        var s = t.colorTextures[o];
                                        s.texturePart ? (this.renderer.texture.bind(s.texture, 0), e.framebufferTexture2D(e.FRAMEBUFFER, e.COLOR_ATTACHMENT0 + o, e.TEXTURE_CUBE_MAP_NEGATIVE_X + s.side, s.texture._glTextures[this.CONTEXT_UID].texture, 0)) : (this.renderer.texture.bind(s, 0), e.framebufferTexture2D(e.FRAMEBUFFER, e.COLOR_ATTACHMENT0 + o, e.TEXTURE_2D, s._glTextures[this.CONTEXT_UID].texture, 0)), n.push(e.COLOR_ATTACHMENT0 + o)
                                    }
                                    if ((n.length > 1 && e.drawBuffers(n), t.depthTexture) && this.writeDepthTexture) {
                                        var a = t.depthTexture;
                                        this.renderer.texture.bind(a, 0), e.framebufferTexture2D(e.FRAMEBUFFER, e.DEPTH_ATTACHMENT, e.TEXTURE_2D, a._glTextures[this.CONTEXT_UID].texture, 0)
                                    }
                                    r.stencil || !t.stencil && !t.depth || (r.stencil = e.createRenderbuffer(), e.bindRenderbuffer(e.RENDERBUFFER, r.stencil), e.renderbufferStorage(e.RENDERBUFFER, e.DEPTH_STENCIL, t.width, t.height), t.depthTexture || e.framebufferRenderbuffer(e.FRAMEBUFFER, e.DEPTH_STENCIL_ATTACHMENT, e.RENDERBUFFER, r.stencil))
                                }, r.prototype.disposeFramebuffer = function (t, e) {
                                    var r = t.glFramebuffers[this.CONTEXT_UID],
                                        i = this.gl;
                                    if (r) {
                                        delete t.glFramebuffers[this.CONTEXT_UID];
                                        var n = this.managedFramebuffers.indexOf(t);
                                        n >= 0 && this.managedFramebuffers.splice(n, 1), t.disposeRunner.remove(this), e || (i.deleteFramebuffer(r.framebuffer), r.stencil && i.deleteRenderbuffer(r.stencil))
                                    }
                                }, r.prototype.disposeAll = function (t) {
                                    var e = this.managedFramebuffers;
                                    this.managedFramebuffers = [];
                                    for (var r = 0; r < e.length; r++) this.disposeFramebuffer(e[r], t)
                                }, r.prototype.forceStencil = function () {
                                    var t = this.current;
                                    if (t) {
                                        var e = t.glFramebuffers[this.CONTEXT_UID];
                                        if (e && !e.stencil) {
                                            t.enableStencil();
                                            var r = t.width,
                                                i = t.height,
                                                n = this.gl,
                                                o = n.createRenderbuffer();
                                            n.bindRenderbuffer(n.RENDERBUFFER, o), n.renderbufferStorage(n.RENDERBUFFER, n.DEPTH_STENCIL, r, i), e.stencil = o, n.framebufferRenderbuffer(n.FRAMEBUFFER, n.DEPTH_STENCIL_ATTACHMENT, n.RENDERBUFFER, o)
                                        }
                                    }
                                }, r.prototype.reset = function () {
                                    this.current = this.unknownFramebuffer, this.viewport = new ar
                                }, Object.defineProperties(r.prototype, i), r
                            }(Zr),
                            Pi = function (t) {
                                this.buffer = t, this.updateID = -1, this.byteLength = -1, this.refCount = 0
                            },
                            Ai = {
                                5126: 4,
                                5123: 2,
                                5121: 1
                            },
                            Oi = function (t) {
                                function r(e) {
                                    t.call(this, e), this._activeGeometry = null, this._activeVao = null, this.hasVao = !0, this.hasInstance = !0, this.canUseUInt32ElementIndex = !1, this.boundBuffers = {}, this.managedGeometries = {}, this.managedBuffers = {}
                                }
                                return t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r, r.prototype.contextChange = function () {
                                    this.disposeAll(!0);
                                    var t = this.gl = this.renderer.gl,
                                        r = this.renderer.context;
                                    if (this.CONTEXT_UID = this.renderer.CONTEXT_UID, !t.createVertexArray) {
                                        var i = this.renderer.context.extensions.vertexArrayObject;
                                        V.PREFER_ENV === e.ENV.WEBGL_LEGACY && (i = null), i ? (t.createVertexArray = function () {
                                            return i.createVertexArrayOES()
                                        }, t.bindVertexArray = function (t) {
                                            return i.bindVertexArrayOES(t)
                                        }, t.deleteVertexArray = function (t) {
                                            return i.deleteVertexArrayOES(t)
                                        }) : (this.hasVao = !1, t.createVertexArray = function () {}, t.bindVertexArray = function () {}, t.deleteVertexArray = function () {})
                                    }
                                    if (!t.vertexAttribDivisor) {
                                        var n = t.getExtension("ANGLE_instanced_arrays");
                                        n ? (t.vertexAttribDivisor = function (t, e) {
                                            return n.vertexAttribDivisorANGLE(t, e)
                                        }, t.drawElementsInstanced = function (t, e, r, i, o) {
                                            return n.drawElementsInstancedANGLE(t, e, r, i, o)
                                        }, t.drawArraysInstanced = function (t, e, r, i) {
                                            return n.drawArraysInstancedANGLE(t, e, r, i)
                                        }) : this.hasInstance = !1
                                    }
                                    this.canUseUInt32ElementIndex = 2 === r.webGLVersion || !!r.extensions.uint32ElementIndex
                                }, r.prototype.bind = function (t, e) {
                                    e = e || this.renderer.shader.shader;
                                    var r = this.gl,
                                        i = t.glVertexArrayObjects[this.CONTEXT_UID];
                                    i || (this.managedGeometries[t.id] = t, t.disposeRunner.add(this), t.glVertexArrayObjects[this.CONTEXT_UID] = i = {});
                                    var n = i[e.program.id] || this.initGeometryVao(t, e.program);
                                    this._activeGeometry = t, this._activeVao !== n && (this._activeVao = n, this.hasVao ? r.bindVertexArray(n) : this.activateVao(t, e.program)), this.updateBuffers()
                                }, r.prototype.reset = function () {
                                    this.unbind()
                                }, r.prototype.updateBuffers = function () {
                                    for (var t = this._activeGeometry, e = this.gl, r = 0; r < t.buffers.length; r++) {
                                        var i = t.buffers[r],
                                            n = i._glBuffers[this.CONTEXT_UID];
                                        if (i._updateID !== n.updateID) {
                                            n.updateID = i._updateID;
                                            var o = i.index ? e.ELEMENT_ARRAY_BUFFER : e.ARRAY_BUFFER;
                                            if (e.bindBuffer(o, n.buffer), this._boundBuffer = n, n.byteLength >= i.data.byteLength) e.bufferSubData(o, 0, i.data);
                                            else {
                                                var s = i.static ? e.STATIC_DRAW : e.DYNAMIC_DRAW;
                                                n.byteLength = i.data.byteLength, e.bufferData(o, i.data, s)
                                            }
                                        }
                                    }
                                }, r.prototype.checkCompatibility = function (t, e) {
                                    var r = t.attributes,
                                        i = e.attributeData;
                                    for (var n in i)
                                        if (!r[n]) throw new Error('shader and geometry incompatible, geometry missing the "' + n + '" attribute')
                                }, r.prototype.getSignature = function (t, e) {
                                    var r = t.attributes,
                                        i = e.attributeData,
                                        n = ["g", t.id];
                                    for (var o in r) i[o] && n.push(o);
                                    return n.join("-")
                                }, r.prototype.initGeometryVao = function (t, e) {
                                    this.checkCompatibility(t, e);
                                    var r = this.gl,
                                        i = this.CONTEXT_UID,
                                        n = this.getSignature(t, e),
                                        o = t.glVertexArrayObjects[this.CONTEXT_UID],
                                        s = o[n];
                                    if (s) return o[e.id] = s, s;
                                    var a = t.buffers,
                                        h = t.attributes,
                                        u = {},
                                        l = {};
                                    for (var c in a) u[c] = 0, l[c] = 0;
                                    for (var d in h) !h[d].size && e.attributeData[d] ? h[d].size = e.attributeData[d].size : h[d].size || console.warn("PIXI Geometry attribute '" + d + "' size cannot be determined (likely the bound shader does not have the attribute)"), u[h[d].buffer] += h[d].size * Ai[h[d].type];
                                    for (var p in h) {
                                        var f = h[p],
                                            m = f.size;
                                        void 0 === f.stride && (u[f.buffer] === m * Ai[f.type] ? f.stride = 0 : f.stride = u[f.buffer]), void 0 === f.start && (f.start = l[f.buffer], l[f.buffer] += m * Ai[f.type])
                                    }
                                    s = r.createVertexArray(), r.bindVertexArray(s);
                                    for (var g = 0; g < a.length; g++) {
                                        var v = a[g];
                                        v._glBuffers[i] || (v._glBuffers[i] = new Pi(r.createBuffer()), this.managedBuffers[v.id] = v, v.disposeRunner.add(this)), v._glBuffers[i].refCount++
                                    }
                                    return this.activateVao(t, e), this._activeVao = s, o[e.id] = s, o[n] = s, s
                                }, r.prototype.disposeBuffer = function (t, e) {
                                    if (this.managedBuffers[t.id]) {
                                        delete this.managedBuffers[t.id];
                                        var r = t._glBuffers[this.CONTEXT_UID],
                                            i = this.gl;
                                        t.disposeRunner.remove(this), r && (e || i.deleteBuffer(r.buffer), delete t._glBuffers[this.CONTEXT_UID])
                                    }
                                }, r.prototype.disposeGeometry = function (t, e) {
                                    if (this.managedGeometries[t.id]) {
                                        delete this.managedGeometries[t.id];
                                        var r = t.glVertexArrayObjects[this.CONTEXT_UID],
                                            i = this.gl,
                                            n = t.buffers;
                                        if (t.disposeRunner.remove(this), r) {
                                            for (var o = 0; o < n.length; o++) {
                                                var s = n[o]._glBuffers[this.CONTEXT_UID];
                                                s.refCount--, 0 !== s.refCount || e || this.disposeBuffer(n[o], e)
                                            }
                                            if (!e)
                                                for (var a in r)
                                                    if ("g" === a[0]) {
                                                        var h = r[a];
                                                        this._activeVao === h && this.unbind(), i.deleteVertexArray(h)
                                                    } delete t.glVertexArrayObjects[this.CONTEXT_UID]
                                        }
                                    }
                                }, r.prototype.disposeAll = function (t) {
                                    for (var e = Object.keys(this.managedGeometries), r = 0; r < e.length; r++) this.disposeGeometry(this.managedGeometries[e[r]], t);
                                    e = Object.keys(this.managedBuffers);
                                    for (var i = 0; i < e.length; i++) this.disposeBuffer(this.managedBuffers[e[i]], t)
                                }, r.prototype.activateVao = function (t, e) {
                                    var r = this.gl,
                                        i = this.CONTEXT_UID,
                                        n = t.buffers,
                                        o = t.attributes;
                                    t.indexBuffer && r.bindBuffer(r.ELEMENT_ARRAY_BUFFER, t.indexBuffer._glBuffers[i].buffer);
                                    var s = null;
                                    for (var a in o) {
                                        var h = o[a],
                                            u = n[h.buffer]._glBuffers[i];
                                        if (e.attributeData[a]) {
                                            s !== u && (r.bindBuffer(r.ARRAY_BUFFER, u.buffer), s = u);
                                            var l = e.attributeData[a].location;
                                            if (r.enableVertexAttribArray(l), r.vertexAttribPointer(l, h.size, h.type || r.FLOAT, h.normalized, h.stride, h.start), h.instance) {
                                                if (!this.hasInstance) throw new Error("geometry error, GPU Instancing is not supported on this device");
                                                r.vertexAttribDivisor(l, 1)
                                            }
                                        }
                                    }
                                }, r.prototype.draw = function (t, e, r, i) {
                                    var n = this.gl,
                                        o = this._activeGeometry;
                                    if (o.indexBuffer) {
                                        var s = o.indexBuffer.data.BYTES_PER_ELEMENT,
                                            a = 2 === s ? n.UNSIGNED_SHORT : n.UNSIGNED_INT;
                                        2 === s || 4 === s && this.canUseUInt32ElementIndex ? o.instanced ? n.drawElementsInstanced(t, e || o.indexBuffer.data.length, a, (r || 0) * s, i || 1) : n.drawElements(t, e || o.indexBuffer.data.length, a, (r || 0) * s) : console.warn("unsupported index buffer type: uint32")
                                    } else o.instanced ? n.drawArraysInstanced(t, r, e || o.getSize(), i || 1) : n.drawArrays(t, r, e || o.getSize());
                                    return this
                                }, r.prototype.unbind = function () {
                                    this.gl.bindVertexArray(null), this._activeVao = null, this._activeGeometry = null
                                }, r
                            }(Zr),
                            Di = function (t) {
                                this.type = e.MASK_TYPES.NONE, this.autoDetect = !0, this.maskObject = t || null, this.pooled = !1, this.isMaskData = !0, this._stencilCounter = 0, this._scissorCounter = 0, this._scissorRect = null, this._target = null
                            };

                        function Ci(t, e, r, i) {
                            var n = Mi(t, t.VERTEX_SHADER, e),
                                o = Mi(t, t.FRAGMENT_SHADER, r),
                                s = t.createProgram();
                            if (t.attachShader(s, n), t.attachShader(s, o), i)
                                for (var a in i) t.bindAttribLocation(s, i[a], a);
                            return t.linkProgram(s), t.getProgramParameter(s, t.LINK_STATUS) || (t.getShaderParameter(n, t.COMPILE_STATUS) || (console.warn(e), console.error(t.getShaderInfoLog(n))), t.getShaderParameter(o, t.COMPILE_STATUS) || (console.warn(r), console.error(t.getShaderInfoLog(o))), console.error("Pixi.js Error: Could not initialize shader."), console.error("gl.VALIDATE_STATUS", t.getProgramParameter(s, t.VALIDATE_STATUS)), console.error("gl.getError()", t.getError()), "" !== t.getProgramInfoLog(s) && console.warn("Pixi.js Warning: gl.getProgramInfoLog()", t.getProgramInfoLog(s)), t.deleteProgram(s), s = null), t.deleteShader(n), t.deleteShader(o), s
                        }

                        function Mi(t, e, r) {
                            var i = t.createShader(e);
                            return t.shaderSource(i, r), t.compileShader(i), i
                        }

                        function Ri(t, e) {
                            switch (t) {
                                case "float":
                                    return 0;
                                case "vec2":
                                    return new Float32Array(2 * e);
                                case "vec3":
                                    return new Float32Array(3 * e);
                                case "vec4":
                                    return new Float32Array(4 * e);
                                case "int":
                                case "sampler2D":
                                case "sampler2DArray":
                                    return 0;
                                case "ivec2":
                                    return new Int32Array(2 * e);
                                case "ivec3":
                                    return new Int32Array(3 * e);
                                case "ivec4":
                                    return new Int32Array(4 * e);
                                case "bool":
                                    return !1;
                                case "bvec2":
                                    return Ni(2 * e);
                                case "bvec3":
                                    return Ni(3 * e);
                                case "bvec4":
                                    return Ni(4 * e);
                                case "mat2":
                                    return new Float32Array([1, 0, 0, 1]);
                                case "mat3":
                                    return new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);
                                case "mat4":
                                    return new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])
                            }
                            return null
                        }

                        function Ni(t) {
                            for (var e = new Array(t), r = 0; r < e.length; r++) e[r] = !1;
                            return e
                        }
                        Di.prototype.reset = function () {
                            this.pooled && (this.maskObject = null, this.type = e.MASK_TYPES.NONE, this.autoDetect = !0), this._target = null
                        }, Di.prototype.copyCountersOrReset = function (t) {
                            t ? (this._stencilCounter = t._stencilCounter, this._scissorCounter = t._scissorCounter, this._scissorRect = t._scissorRect) : (this._stencilCounter = 0, this._scissorCounter = 0, this._scissorRect = null)
                        };
                        var Li, Fi = {},
                            Bi = Fi;

                        function Ui() {
                            if (Bi === Fi || Bi && Bi.isContextLost()) {
                                var t, r = v.createElement("canvas");
                                V.PREFER_ENV >= e.ENV.WEBGL2 && (t = r.getContext("webgl2", {})), t || ((t = r.getContext("webgl", {}) || r.getContext("experimental-webgl", {})) ? t.getExtension("WEBGL_draw_buffers") : t = null), Bi = t
                            }
                            return Bi
                        }

                        function ki(t, r, i) {
                            if ("precision" !== t.substring(0, 9)) {
                                var n = r;
                                return r === e.PRECISION.HIGH && i !== e.PRECISION.HIGH && (n = e.PRECISION.MEDIUM), "precision " + n + " float;\n" + t
                            }
                            return i !== e.PRECISION.HIGH && "precision highp" === t.substring(0, 15) ? t.replace("precision highp", "precision mediump") : t
                        }
                        var Xi = {
                            float: 1,
                            vec2: 2,
                            vec3: 3,
                            vec4: 4,
                            int: 1,
                            ivec2: 2,
                            ivec3: 3,
                            ivec4: 4,
                            bool: 1,
                            bvec2: 2,
                            bvec3: 3,
                            bvec4: 4,
                            mat2: 4,
                            mat3: 9,
                            mat4: 16,
                            sampler2D: 1
                        };

                        function ji(t) {
                            return Xi[t]
                        }
                        var Hi = null,
                            Gi = {
                                FLOAT: "float",
                                FLOAT_VEC2: "vec2",
                                FLOAT_VEC3: "vec3",
                                FLOAT_VEC4: "vec4",
                                INT: "int",
                                INT_VEC2: "ivec2",
                                INT_VEC3: "ivec3",
                                INT_VEC4: "ivec4",
                                BOOL: "bool",
                                BOOL_VEC2: "bvec2",
                                BOOL_VEC3: "bvec3",
                                BOOL_VEC4: "bvec4",
                                FLOAT_MAT2: "mat2",
                                FLOAT_MAT3: "mat3",
                                FLOAT_MAT4: "mat4",
                                SAMPLER_2D: "sampler2D",
                                SAMPLER_CUBE: "samplerCube",
                                SAMPLER_2D_ARRAY: "sampler2DArray"
                            };

                        function Yi(t, e) {
                            if (!Hi) {
                                var r = Object.keys(Gi);
                                Hi = {};
                                for (var i = 0; i < r.length; ++i) {
                                    var n = r[i];
                                    Hi[t[n]] = Gi[n]
                                }
                            }
                            return Hi[e]
                        }
                        var zi = {
                                float: "\n    if(cv !== v)\n    {\n        cv.v = v;\n        gl.uniform1f(location, v)\n    }",
                                vec2: "\n    if(cv[0] !== v[0] || cv[1] !== v[1])\n    {\n        cv[0] = v[0];\n        cv[1] = v[1];\n        gl.uniform2f(location, v[0], v[1])\n    }",
                                vec3: "\n    if(cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n    {\n        cv[0] = v[0];\n        cv[1] = v[1];\n        cv[2] = v[2];\n\n        gl.uniform3f(location, v[0], v[1], v[2])\n    }",
                                vec4: "gl.uniform4f(location, v[0], v[1], v[2], v[3])",
                                int: "gl.uniform1i(location, v)",
                                ivec2: "gl.uniform2i(location, v[0], v[1])",
                                ivec3: "gl.uniform3i(location, v[0], v[1], v[2])",
                                ivec4: "gl.uniform4i(location, v[0], v[1], v[2], v[3])",
                                bool: "gl.uniform1i(location, v)",
                                bvec2: "gl.uniform2i(location, v[0], v[1])",
                                bvec3: "gl.uniform3i(location, v[0], v[1], v[2])",
                                bvec4: "gl.uniform4i(location, v[0], v[1], v[2], v[3])",
                                mat2: "gl.uniformMatrix2fv(location, false, v)",
                                mat3: "gl.uniformMatrix3fv(location, false, v)",
                                mat4: "gl.uniformMatrix4fv(location, false, v)",
                                sampler2D: "gl.uniform1i(location, v)",
                                samplerCube: "gl.uniform1i(location, v)",
                                sampler2DArray: "gl.uniform1i(location, v)"
                            },
                            Vi = {
                                float: "gl.uniform1fv(location, v)",
                                vec2: "gl.uniform2fv(location, v)",
                                vec3: "gl.uniform3fv(location, v)",
                                vec4: "gl.uniform4fv(location, v)",
                                mat4: "gl.uniformMatrix4fv(location, false, v)",
                                mat3: "gl.uniformMatrix3fv(location, false, v)",
                                mat2: "gl.uniformMatrix2fv(location, false, v)",
                                int: "gl.uniform1iv(location, v)",
                                ivec2: "gl.uniform2iv(location, v)",
                                ivec3: "gl.uniform3iv(location, v)",
                                ivec4: "gl.uniform4iv(location, v)",
                                bool: "gl.uniform1iv(location, v)",
                                bvec2: "gl.uniform2iv(location, v)",
                                bvec3: "gl.uniform3iv(location, v)",
                                bvec4: "gl.uniform4iv(location, v)",
                                sampler2D: "gl.uniform1iv(location, v)",
                                samplerCube: "gl.uniform1iv(location, v)",
                                sampler2DArray: "gl.uniform1iv(location, v)"
                            };
                        var Wi, qi = ["precision mediump float;", "void main(void){", "float test = 0.1;", "%forloop%", "gl_FragColor = vec4(0.0);", "}"].join("\n");

                        function Ki(t, e) {
                            if (0 === t) throw new Error("Invalid value of `0` passed to `checkMaxIfStatementsInShader`");
                            for (var r = e.createShader(e.FRAGMENT_SHADER);;) {
                                var i = qi.replace(/%forloop%/gi, Zi(t));
                                if (e.shaderSource(r, i), e.compileShader(r), e.getShaderParameter(r, e.COMPILE_STATUS)) break;
                                t = t / 2 | 0
                            }
                            return t
                        }

                        function Zi(t) {
                            for (var e = "", r = 0; r < t; ++r) r > 0 && (e += "\nelse "), r < t - 1 && (e += "if(test == " + r + ".0){}");
                            return e
                        }
                        var $i = 0,
                            Ji = {},
                            Qi = function t(r, i, n) {
                                void 0 === n && (n = "pixi-shader"), this.id = $i++, this.vertexSrc = r || t.defaultVertexSrc, this.fragmentSrc = i || t.defaultFragmentSrc, this.vertexSrc = this.vertexSrc.trim(), this.fragmentSrc = this.fragmentSrc.trim(), "#version" !== this.vertexSrc.substring(0, 8) && (n = n.replace(/\s+/g, "-"), Ji[n] ? (Ji[n]++, n += "-" + Ji[n]) : Ji[n] = 1, this.vertexSrc = "#define SHADER_NAME " + n + "\n" + this.vertexSrc, this.fragmentSrc = "#define SHADER_NAME " + n + "\n" + this.fragmentSrc, this.vertexSrc = ki(this.vertexSrc, V.PRECISION_VERTEX, e.PRECISION.HIGH), this.fragmentSrc = ki(this.fragmentSrc, V.PRECISION_FRAGMENT, function () {
                                    if (!Li) {
                                        Li = e.PRECISION.MEDIUM;
                                        var t = Ui();
                                        if (t && t.getShaderPrecisionFormat) {
                                            var r = t.getShaderPrecisionFormat(t.FRAGMENT_SHADER, t.HIGH_FLOAT);
                                            Li = r.precision ? e.PRECISION.HIGH : e.PRECISION.MEDIUM
                                        }
                                    }
                                    return Li
                                }())), this.extractData(this.vertexSrc, this.fragmentSrc), this.glPrograms = {}, this.syncUniforms = null
                            },
                            tn = {
                                defaultVertexSrc: {
                                    configurable: !0
                                },
                                defaultFragmentSrc: {
                                    configurable: !0
                                }
                            };
                        Qi.prototype.extractData = function (t, e) {
                            var r = Ui();
                            if (r) {
                                var i = Ci(r, t, e);
                                this.attributeData = this.getAttributeData(i, r), this.uniformData = this.getUniformData(i, r), r.deleteProgram(i)
                            } else this.uniformData = {}, this.attributeData = {}
                        }, Qi.prototype.getAttributeData = function (t, e) {
                            for (var r = {}, i = [], n = e.getProgramParameter(t, e.ACTIVE_ATTRIBUTES), o = 0; o < n; o++) {
                                var s = e.getActiveAttrib(t, o),
                                    a = Yi(e, s.type),
                                    h = {
                                        type: a,
                                        name: s.name,
                                        size: ji(a),
                                        location: 0
                                    };
                                r[s.name] = h, i.push(h)
                            }
                            i.sort((function (t, e) {
                                return t.name > e.name ? 1 : -1
                            }));
                            for (var u = 0; u < i.length; u++) i[u].location = u;
                            return r
                        }, Qi.prototype.getUniformData = function (t, e) {
                            for (var r = {}, i = e.getProgramParameter(t, e.ACTIVE_UNIFORMS), n = 0; n < i; n++) {
                                var o = e.getActiveUniform(t, n),
                                    s = o.name.replace(/\[.*?\]/, ""),
                                    a = o.name.match(/\[.*?\]/, ""),
                                    h = Yi(e, o.type);
                                r[s] = {
                                    type: h,
                                    size: o.size,
                                    isArray: a,
                                    value: Ri(h, o.size)
                                }
                            }
                            return r
                        }, tn.defaultVertexSrc.get = function () {
                            return "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void){\n   gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n   vTextureCoord = aTextureCoord;\n}\n"
                        }, tn.defaultFragmentSrc.get = function () {
                            return "varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\n\nvoid main(void){\n   gl_FragColor *= texture2D(uSampler, vTextureCoord);\n}"
                        }, Qi.from = function (t, e, r) {
                            var i = t + e,
                                n = Le[i];
                            return n || (Le[i] = n = new Qi(t, e, r)), n
                        }, Object.defineProperties(Qi, tn);
                        var en = function (t, e) {
                                for (var r in this.program = t, this.uniformGroup = e ? e instanceof _i ? e : new _i(e) : new _i({}), t.uniformData) this.uniformGroup.uniforms[r] instanceof Array && (this.uniformGroup.uniforms[r] = new Float32Array(this.uniformGroup.uniforms[r]))
                            },
                            rn = {
                                uniforms: {
                                    configurable: !0
                                }
                            };
                        en.prototype.checkUniformExists = function (t, e) {
                            if (e.uniforms[t]) return !0;
                            for (var r in e.uniforms) {
                                var i = e.uniforms[r];
                                if (i.group && this.checkUniformExists(t, i)) return !0
                            }
                            return !1
                        }, en.prototype.destroy = function () {
                            this.uniformGroup = null
                        }, rn.uniforms.get = function () {
                            return this.uniformGroup.uniforms
                        }, en.from = function (t, e, r) {
                            var i = Qi.from(t, e);
                            return new en(i, r)
                        }, Object.defineProperties(en.prototype, rn);
                        var nn = function () {
                                this.data = 0, this.blendMode = e.BLEND_MODES.NORMAL, this.polygonOffset = 0, this.blend = !0
                            },
                            on = {
                                blend: {
                                    configurable: !0
                                },
                                offsets: {
                                    configurable: !0
                                },
                                culling: {
                                    configurable: !0
                                },
                                depthTest: {
                                    configurable: !0
                                },
                                clockwiseFrontFace: {
                                    configurable: !0
                                },
                                blendMode: {
                                    configurable: !0
                                },
                                polygonOffset: {
                                    configurable: !0
                                }
                            };
                        on.blend.get = function () {
                            return !!(1 & this.data)
                        }, on.blend.set = function (t) {
                            !!(1 & this.data) !== t && (this.data ^= 1)
                        }, on.offsets.get = function () {
                            return !!(2 & this.data)
                        }, on.offsets.set = function (t) {
                            !!(2 & this.data) !== t && (this.data ^= 2)
                        }, on.culling.get = function () {
                            return !!(4 & this.data)
                        }, on.culling.set = function (t) {
                            !!(4 & this.data) !== t && (this.data ^= 4)
                        }, on.depthTest.get = function () {
                            return !!(8 & this.data)
                        }, on.depthTest.set = function (t) {
                            !!(8 & this.data) !== t && (this.data ^= 8)
                        }, on.clockwiseFrontFace.get = function () {
                            return !!(16 & this.data)
                        }, on.clockwiseFrontFace.set = function (t) {
                            !!(16 & this.data) !== t && (this.data ^= 16)
                        }, on.blendMode.get = function () {
                            return this._blendMode
                        }, on.blendMode.set = function (t) {
                            this.blend = t !== e.BLEND_MODES.NONE, this._blendMode = t
                        }, on.polygonOffset.get = function () {
                            return this._polygonOffset
                        }, on.polygonOffset.set = function (t) {
                            this.offsets = !!t, this._polygonOffset = t
                        }, nn.for2d = function () {
                            var t = new nn;
                            return t.depthTest = !1, t.blend = !0, t
                        }, Object.defineProperties(nn.prototype, on);
                        var sn = function (t) {
                            function e(r, i, n) {
                                var o = Qi.from(r || e.defaultVertexSrc, i || e.defaultFragmentSrc);
                                t.call(this, o, n), this.padding = 0, this.resolution = V.FILTER_RESOLUTION, this.enabled = !0, this.autoFit = !0, this.legacy = !!this.program.attributeData.aTextureCoord, this.state = new nn
                            }
                            t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
                            var r = {
                                    blendMode: {
                                        configurable: !0
                                    }
                                },
                                i = {
                                    defaultVertexSrc: {
                                        configurable: !0
                                    },
                                    defaultFragmentSrc: {
                                        configurable: !0
                                    }
                                };
                            return e.prototype.apply = function (t, e, r, i, n) {
                                t.applyFilter(this, e, r, i, n)
                            }, r.blendMode.get = function () {
                                return this.state.blendMode
                            }, r.blendMode.set = function (t) {
                                this.state.blendMode = t
                            }, i.defaultVertexSrc.get = function () {
                                return "attribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n    vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n    return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n    return aVertexPosition * (outputFrame.zw * inputSize.zw);\n}\n\nvoid main(void)\n{\n    gl_Position = filterVertexPosition();\n    vTextureCoord = filterTextureCoord();\n}\n"
                            }, i.defaultFragmentSrc.get = function () {
                                return "varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\n\nvoid main(void){\n   gl_FragColor = texture2D(uSampler, vTextureCoord);\n}\n"
                            }, Object.defineProperties(e.prototype, r), Object.defineProperties(e, i), e
                        }(en);
                        sn.SOURCE_KEY_MAP = {};
                        var an = new $e,
                            hn = function (t, e) {
                                this._texture = t, this.mapCoord = new $e, this.uClampFrame = new Float32Array(4), this.uClampOffset = new Float32Array(2), this._updateID = -1, this.clampOffset = 0, this.clampMargin = void 0 === e ? .5 : e, this.isSimple = !1
                            },
                            un = {
                                texture: {
                                    configurable: !0
                                }
                            };
                        un.texture.get = function () {
                            return this._texture
                        }, un.texture.set = function (t) {
                            this._texture = t, this._updateID = -1
                        }, hn.prototype.multiplyUvs = function (t, e) {
                            void 0 === e && (e = t);
                            for (var r = this.mapCoord, i = 0; i < t.length; i += 2) {
                                var n = t[i],
                                    o = t[i + 1];
                                e[i] = n * r.a + o * r.c + r.tx, e[i + 1] = n * r.b + o * r.d + r.ty
                            }
                            return e
                        }, hn.prototype.update = function (t) {
                            var e = this._texture;
                            if (!e || !e.valid) return !1;
                            if (!t && this._updateID === e._updateID) return !1;
                            this._updateID = e._updateID;
                            var r = e._uvs;
                            this.mapCoord.set(r.x1 - r.x0, r.y1 - r.y0, r.x3 - r.x0, r.y3 - r.y0, r.x0, r.y0);
                            var i = e.orig,
                                n = e.trim;
                            n && (an.set(i.width / n.width, 0, 0, i.height / n.height, -n.x / n.width, -n.y / n.height), this.mapCoord.append(an));
                            var o = e.baseTexture,
                                s = this.uClampFrame,
                                a = this.clampMargin / o.resolution,
                                h = this.clampOffset;
                            return s[0] = (e._frame.x + a + h) / o.width, s[1] = (e._frame.y + a + h) / o.height, s[2] = (e._frame.x + e._frame.width - a + h) / o.width, s[3] = (e._frame.y + e._frame.height - a + h) / o.height, this.uClampOffset[0] = h / o.realWidth, this.uClampOffset[1] = h / o.realHeight, this.isSimple = e._frame.width === o.width && e._frame.height === o.height && 0 === e.rotate, !0
                        }, Object.defineProperties(hn.prototype, un);
                        var ln = function (t) {
                                function e(e) {
                                    var r = new $e;
                                    t.call(this, "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 otherMatrix;\n\nvarying vec2 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n    gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n    vTextureCoord = aTextureCoord;\n    vMaskCoord = ( otherMatrix * vec3( aTextureCoord, 1.0)  ).xy;\n}\n", "varying vec2 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform sampler2D mask;\nuniform float alpha;\nuniform float npmAlpha;\nuniform vec4 maskClamp;\n\nvoid main(void)\n{\n    float clip = step(3.5,\n        step(maskClamp.x, vMaskCoord.x) +\n        step(maskClamp.y, vMaskCoord.y) +\n        step(vMaskCoord.x, maskClamp.z) +\n        step(vMaskCoord.y, maskClamp.w));\n\n    vec4 original = texture2D(uSampler, vTextureCoord);\n    vec4 masky = texture2D(mask, vMaskCoord);\n    float alphaMul = 1.0 - npmAlpha * (1.0 - masky.a);\n\n    original *= (alphaMul * masky.r * alpha * clip);\n\n    gl_FragColor = original;\n}\n"), e.renderable = !1, this.maskSprite = e, this.maskMatrix = r
                                }
                                return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.apply = function (t, e, r, i) {
                                    var n = this.maskSprite,
                                        o = this.maskSprite.texture;
                                    o.valid && (o.transform || (o.transform = new hn(o, 0)), o.transform.update(), this.uniforms.npmAlpha = o.baseTexture.alphaMode ? 0 : 1, this.uniforms.mask = o, this.uniforms.otherMatrix = t.calculateSpriteMatrix(this.maskMatrix, n).prepend(o.transform.mapCoord), this.uniforms.alpha = n.worldAlpha, this.uniforms.maskClamp = o.transform.uClampFrame, t.applyFilter(this, e, r, i))
                                }, e
                            }(sn),
                            cn = function (t) {
                                function r(e) {
                                    t.call(this, e), this.scissorRenderTarget = null, this.enableScissor = !1, this.alphaMaskPool = [], this.maskDataPool = [], this.maskStack = [], this.alphaMaskIndex = 0
                                }
                                return t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r, r.prototype.setMaskStack = function (t) {
                                    this.maskStack = t, this.renderer.scissor.setMaskStack(t), this.renderer.stencil.setMaskStack(t)
                                }, r.prototype.push = function (t, r) {
                                    if (!r.isMaskData) {
                                        var i = this.maskDataPool.pop() || new Di;
                                        i.pooled = !0, i.maskObject = r, r = i
                                    }
                                    switch (r.autoDetect && this.detect(r), r.copyCountersOrReset(this.maskStack[this.maskStack.length - 1]), r._target = t, r.type) {
                                        case e.MASK_TYPES.SCISSOR:
                                            this.maskStack.push(r), this.renderer.scissor.push(r);
                                            break;
                                        case e.MASK_TYPES.STENCIL:
                                            this.maskStack.push(r), this.renderer.stencil.push(r);
                                            break;
                                        case e.MASK_TYPES.SPRITE:
                                            r.copyCountersOrReset(null), this.pushSpriteMask(r), this.maskStack.push(r)
                                    }
                                }, r.prototype.pop = function (t) {
                                    var r = this.maskStack.pop();
                                    if (r && r._target === t) {
                                        switch (r.type) {
                                            case e.MASK_TYPES.SCISSOR:
                                                this.renderer.scissor.pop();
                                                break;
                                            case e.MASK_TYPES.STENCIL:
                                                this.renderer.stencil.pop(r.maskObject);
                                                break;
                                            case e.MASK_TYPES.SPRITE:
                                                this.popSpriteMask()
                                        }
                                        r.reset(), r.pooled && this.maskDataPool.push(r)
                                    }
                                }, r.prototype.detect = function (t) {
                                    var r = t.maskObject;
                                    if (r.isSprite) t.type = e.MASK_TYPES.SPRITE;
                                    else if (t.type = e.MASK_TYPES.STENCIL, this.enableScissor && r.isFastRect && r.isFastRect()) {
                                        var i = r.worldTransform,
                                            n = Math.atan2(i.b, i.a),
                                            o = Math.atan2(i.d, i.c);
                                        n = Math.round(n * (180 / Math.PI) * 100), o = ((o = Math.round(o * (180 / Math.PI) * 100) - n) % 18e3 + 18e3) % 18e3, 0 === (n = (n % 9e3 + 9e3) % 9e3) && 9e3 === o && (t.type = e.MASK_TYPES.SCISSOR)
                                    }
                                }, r.prototype.pushSpriteMask = function (t) {
                                    var e = t.maskObject,
                                        r = t._target,
                                        i = this.alphaMaskPool[this.alphaMaskIndex];
                                    i || (i = this.alphaMaskPool[this.alphaMaskIndex] = [new ln(e)]), i[0].resolution = this.renderer.resolution, i[0].maskSprite = e;
                                    var n = r.filterArea;
                                    r.filterArea = e.getBounds(!0), this.renderer.filter.push(r, i), r.filterArea = n, this.alphaMaskIndex++
                                }, r.prototype.popSpriteMask = function () {
                                    this.renderer.filter.pop(), this.alphaMaskIndex--
                                }, r
                            }(Zr),
                            dn = function (t) {
                                function e(e) {
                                    t.call(this, e), this.maskStack = [], this.glConst = 0
                                }
                                return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.getStackLength = function () {
                                    return this.maskStack.length
                                }, e.prototype.setMaskStack = function (t) {
                                    var e = this.renderer.gl,
                                        r = this.getStackLength();
                                    this.maskStack = t;
                                    var i = this.getStackLength();
                                    i !== r && (0 === i ? e.disable(this.glConst) : (e.enable(this.glConst), this._useCurrent()))
                                }, e.prototype._useCurrent = function () {}, e.prototype.destroy = function () {
                                    t.prototype.destroy.call(this, this), this.maskStack = null
                                }, e
                            }(Zr),
                            pn = function (t) {
                                function e(e) {
                                    t.call(this, e), this.glConst = y.SCISSOR_TEST
                                }
                                return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.getStackLength = function () {
                                    var t = this.maskStack[this.maskStack.length - 1];
                                    return t ? t._scissorCounter : 0
                                }, e.prototype.push = function (t) {
                                    var e = t.maskObject;
                                    e.renderable = !0;
                                    var r = t._scissorRect,
                                        i = e.getBounds(!0),
                                        n = this.renderer.gl;
                                    e.renderable = !1, r ? i.fit(r) : n.enable(n.SCISSOR_TEST), t._scissorCounter++, t._scissorRect = i, this._useCurrent()
                                }, e.prototype.pop = function () {
                                    var t = this.renderer.gl;
                                    this.getStackLength() > 0 ? this._useCurrent() : t.disable(t.SCISSOR_TEST)
                                }, e.prototype._useCurrent = function () {
                                    var t = this.maskStack[this.maskStack.length - 1]._scissorRect,
                                        e = this.renderer.renderTexture.current,
                                        r = this.renderer.projection,
                                        i = r.transform,
                                        n = r.sourceFrame,
                                        o = r.destinationFrame,
                                        s = e ? e.resolution : this.renderer.resolution,
                                        a = (t.x - n.x) * s + o.x,
                                        h = (t.y - n.y) * s + o.y,
                                        u = t.width * s,
                                        l = t.height * s;
                                    i && (a += i.tx * s, h += i.ty * s), e || (h = this.renderer.height - l - h), this.renderer.gl.scissor(a, h, u, l)
                                }, e
                            }(dn),
                            fn = function (t) {
                                function e(e) {
                                    t.call(this, e), this.glConst = y.STENCIL_TEST
                                }
                                return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.getStackLength = function () {
                                    var t = this.maskStack[this.maskStack.length - 1];
                                    return t ? t._stencilCounter : 0
                                }, e.prototype.push = function (t) {
                                    var e = t.maskObject,
                                        r = this.renderer.gl,
                                        i = t._stencilCounter;
                                    0 === i && (this.renderer.framebuffer.forceStencil(), r.enable(r.STENCIL_TEST)), t._stencilCounter++, r.colorMask(!1, !1, !1, !1), r.stencilFunc(r.EQUAL, i, this._getBitwiseMask()), r.stencilOp(r.KEEP, r.KEEP, r.INCR), e.renderable = !0, e.render(this.renderer), this.renderer.batch.flush(), e.renderable = !1, this._useCurrent()
                                }, e.prototype.pop = function (t) {
                                    var e = this.renderer.gl;
                                    0 === this.getStackLength() ? (e.disable(e.STENCIL_TEST), e.clear(e.STENCIL_BUFFER_BIT), e.clearStencil(0)) : (e.colorMask(!1, !1, !1, !1), e.stencilOp(e.KEEP, e.KEEP, e.DECR), t.renderable = !0, t.render(this.renderer), this.renderer.batch.flush(), t.renderable = !1, this._useCurrent())
                                }, e.prototype._useCurrent = function () {
                                    var t = this.renderer.gl;
                                    t.colorMask(!0, !0, !0, !0), t.stencilFunc(t.EQUAL, this.getStackLength(), this._getBitwiseMask()), t.stencilOp(t.KEEP, t.KEEP, t.KEEP)
                                }, e.prototype._getBitwiseMask = function () {
                                    return (1 << this.getStackLength()) - 1
                                }, e
                            }(dn),
                            mn = function (t) {
                                function e(e) {
                                    t.call(this, e), this.destinationFrame = null, this.sourceFrame = null, this.defaultFrame = null, this.projectionMatrix = new $e, this.transform = null
                                }
                                return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.update = function (t, e, r, i) {
                                    this.destinationFrame = t || this.destinationFrame || this.defaultFrame, this.sourceFrame = e || this.sourceFrame || t, this.calculateProjection(this.destinationFrame, this.sourceFrame, r, i), this.transform && this.projectionMatrix.append(this.transform);
                                    var n = this.renderer;
                                    n.globalUniforms.uniforms.projectionMatrix = this.projectionMatrix, n.globalUniforms.update(), n.shader.shader && n.shader.syncUniformGroup(n.shader.shader.uniforms.globals)
                                }, e.prototype.calculateProjection = function (t, e, r, i) {
                                    var n = this.projectionMatrix;
                                    i ? (n.a = 1 / t.width * 2 * r, n.d = -1 / t.height * 2 * r, n.tx = -1 - e.x * n.a, n.ty = 1 - e.y * n.d) : (n.a = 1 / t.width * 2 * r, n.d = 1 / t.height * 2 * r, n.tx = -1 - e.x * n.a, n.ty = -1 - e.y * n.d)
                                }, e.prototype.setTransform = function () {}, e
                            }(Zr),
                            gn = new ar,
                            vn = function (t) {
                                function e(e) {
                                    t.call(this, e), this.clearColor = e._backgroundColorRgba, this.defaultMaskStack = [], this.current = null, this.sourceFrame = new ar, this.destinationFrame = new ar
                                }
                                return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.bind = function (t, e, r) {
                                    void 0 === t && (t = null), this.current = t;
                                    var i, n = this.renderer;
                                    if (t) {
                                        var o = t.baseTexture;
                                        i = o.resolution, r || (gn.width = o.realWidth, gn.height = o.realHeight, r = gn), e || (e = r), this.renderer.framebuffer.bind(o.framebuffer, r), this.renderer.projection.update(r, e, i, !1), this.renderer.mask.setMaskStack(o.maskStack)
                                    } else i = this.renderer.resolution, r || (gn.width = n.width, gn.height = n.height, r = gn), e || (e = r), n.framebuffer.bind(null, r), this.renderer.projection.update(r, e, i, !0), this.renderer.mask.setMaskStack(this.defaultMaskStack);
                                    this.sourceFrame.copyFrom(e), this.destinationFrame.x = r.x / i, this.destinationFrame.y = r.y / i, this.destinationFrame.width = r.width / i, this.destinationFrame.height = r.height / i, e === r && this.sourceFrame.copyFrom(this.destinationFrame)
                                }, e.prototype.clear = function (t) {
                                    t = this.current ? t || this.current.baseTexture.clearColor : t || this.clearColor, this.renderer.framebuffer.clear(t[0], t[1], t[2], t[3])
                                }, e.prototype.resize = function () {
                                    this.bind(null)
                                }, e.prototype.reset = function () {
                                    this.bind(null)
                                }, e
                            }(Zr),
                            yn = function (t, e) {
                                this.program = t, this.uniformData = e, this.uniformGroups = {}
                            };
                        yn.prototype.destroy = function () {
                            this.uniformData = null, this.uniformGroups = null, this.program = null
                        };
                        var _n = 0,
                            xn = {
                                textureCount: 0
                            },
                            bn = function (t) {
                                function e(e) {
                                    t.call(this, e), this.systemCheck(), this.gl = null, this.shader = null, this.program = null, this.cache = {}, this.id = _n++
                                }
                                return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.systemCheck = function () {
                                    if (! function () {
                                            if ("boolean" == typeof Wi) return Wi;
                                            try {
                                                var t = new Function("param1", "param2", "param3", "return param1[param2] === param3;");
                                                Wi = !0 === t({
                                                    a: "b"
                                                }, "a", "b")
                                            } catch (t) {
                                                Wi = !1
                                            }
                                            return Wi
                                        }()) throw new Error("Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support.")
                                }, e.prototype.contextChange = function (t) {
                                    this.gl = t, this.reset()
                                }, e.prototype.bind = function (t, e) {
                                    t.uniforms.globals = this.renderer.globalUniforms;
                                    var r = t.program,
                                        i = r.glPrograms[this.renderer.CONTEXT_UID] || this.generateShader(t);
                                    return this.shader = t, this.program !== r && (this.program = r, this.gl.useProgram(i.program)), e || (xn.textureCount = 0, this.syncUniformGroup(t.uniformGroup, xn)), i
                                }, e.prototype.setUniforms = function (t) {
                                    var e = this.shader.program,
                                        r = e.glPrograms[this.renderer.CONTEXT_UID];
                                    e.syncUniforms(r.uniformData, t, this.renderer)
                                }, e.prototype.syncUniformGroup = function (t, e) {
                                    var r = this.getglProgram();
                                    t.static && t.dirtyId === r.uniformGroups[t.id] || (r.uniformGroups[t.id] = t.dirtyId, this.syncUniforms(t, r, e))
                                }, e.prototype.syncUniforms = function (t, e, r) {
                                    (t.syncUniforms[this.shader.program.id] || this.createSyncGroups(t))(e.uniformData, t.uniforms, this.renderer, r)
                                }, e.prototype.createSyncGroups = function (t) {
                                    var e = this.getSignature(t, this.shader.program.uniformData);
                                    return this.cache[e] || (this.cache[e] = function (t, e) {
                                        var r = "var v = null;\n    var cv = null\n    var t = 0;\n    var gl = renderer.gl\n    ";
                                        for (var i in t.uniforms) {
                                            var n = e[i];
                                            if (n)
                                                if ("float" === n.type && 1 === n.size) r += "\n            if(uv." + i + " !== ud." + i + ".value)\n            {\n                ud." + i + ".value = uv." + i + "\n                gl.uniform1f(ud." + i + ".location, uv." + i + ")\n            }\n";
                                                else if ("sampler2D" !== n.type && "samplerCube" !== n.type && "sampler2DArray" !== n.type || 1 !== n.size || n.isArray)
                                                if ("mat3" === n.type && 1 === n.size) void 0 !== t.uniforms[i].a ? r += "\n                gl.uniformMatrix3fv(ud." + i + ".location, false, uv." + i + ".toArray(true));\n                \n" : r += "\n                gl.uniformMatrix3fv(ud." + i + ".location, false, uv." + i + ");\n                \n";
                                                else if ("vec2" === n.type && 1 === n.size) void 0 !== t.uniforms[i].x ? r += "\n                cv = ud." + i + ".value;\n                v = uv." + i + ";\n\n                if(cv[0] !== v.x || cv[1] !== v.y)\n                {\n                    cv[0] = v.x;\n                    cv[1] = v.y;\n                    gl.uniform2f(ud." + i + ".location, v.x, v.y);\n                }\n" : r += "\n                cv = ud." + i + ".value;\n                v = uv." + i + ";\n\n                if(cv[0] !== v[0] || cv[1] !== v[1])\n                {\n                    cv[0] = v[0];\n                    cv[1] = v[1];\n                    gl.uniform2f(ud." + i + ".location, v[0], v[1]);\n                }\n                \n";
                                            else if ("vec4" === n.type && 1 === n.size) void 0 !== t.uniforms[i].width ? r += "\n                cv = ud." + i + ".value;\n                v = uv." + i + ";\n\n                if(cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height)\n                {\n                    cv[0] = v.x;\n                    cv[1] = v.y;\n                    cv[2] = v.width;\n                    cv[3] = v.height;\n                    gl.uniform4f(ud." + i + ".location, v.x, v.y, v.width, v.height)\n                }\n" : r += "\n                cv = ud." + i + ".value;\n                v = uv." + i + ";\n\n                if(cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n                {\n                    cv[0] = v[0];\n                    cv[1] = v[1];\n                    cv[2] = v[2];\n                    cv[3] = v[3];\n\n                    gl.uniform4f(ud." + i + ".location, v[0], v[1], v[2], v[3])\n                }\n                \n";
                                            else {
                                                r += "\n            cv = ud." + i + ".value;\n            v = uv." + i + ";\n            " + (1 === n.size ? zi : Vi)[n.type].replace("location", "ud." + i + ".location") + ";\n"
                                            } else r += "\n\n            t = syncData.textureCount++;\n\n            renderer.texture.bind(uv." + i + ", t);\n            \n            if(ud." + i + ".value !== t)\n            {\n                ud." + i + ".value = t;\n                gl.uniform1i(ud." + i + ".location, t);\n; // eslint-disable-line max-len\n            }\n";
                                            else t.uniforms[i].group && (r += "\n                    renderer.shader.syncUniformGroup(uv." + i + ", syncData);\n                ")
                                        }
                                        return new Function("ud", "uv", "renderer", "syncData", r)
                                    }(t, this.shader.program.uniformData)), t.syncUniforms[this.shader.program.id] = this.cache[e], t.syncUniforms[this.shader.program.id]
                                }, e.prototype.getSignature = function (t, e) {
                                    var r = t.uniforms,
                                        i = [];
                                    for (var n in r) i.push(n), e[n] && i.push(e[n].type);
                                    return i.join("-")
                                }, e.prototype.getglProgram = function () {
                                    return this.shader ? this.shader.program.glPrograms[this.renderer.CONTEXT_UID] : null
                                }, e.prototype.generateShader = function (t) {
                                    var e = this.gl,
                                        r = t.program,
                                        i = {};
                                    for (var n in r.attributeData) i[n] = r.attributeData[n].location;
                                    var o = Ci(e, r.vertexSrc, r.fragmentSrc, i),
                                        s = {};
                                    for (var a in r.uniformData) {
                                        var h = r.uniformData[a];
                                        s[a] = {
                                            location: e.getUniformLocation(o, a),
                                            value: Ri(h.type, h.size)
                                        }
                                    }
                                    var u = new yn(o, s);
                                    return r.glPrograms[this.renderer.CONTEXT_UID] = u, u
                                }, e.prototype.reset = function () {
                                    this.program = null, this.shader = null
                                }, e.prototype.destroy = function () {
                                    this.destroyed = !0
                                }, e
                            }(Zr);
                        var En = function (t) {
                                function r(r) {
                                    t.call(this, r), this.gl = null, this.stateId = 0, this.polygonOffset = 0, this.blendMode = e.BLEND_MODES.NONE, this._blendEq = !1, this.map = [], this.map[0] = this.setBlend, this.map[1] = this.setOffset, this.map[2] = this.setCullFace, this.map[3] = this.setDepthTest, this.map[4] = this.setFrontFace, this.checks = [], this.defaultState = new nn, this.defaultState.blend = !0, this.defaultState.depth = !0
                                }
                                return t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r, r.prototype.contextChange = function (t) {
                                    this.gl = t, this.blendModes = function (t, r) {
                                        return void 0 === r && (r = []), r[e.BLEND_MODES.NORMAL] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], r[e.BLEND_MODES.ADD] = [t.ONE, t.ONE], r[e.BLEND_MODES.MULTIPLY] = [t.DST_COLOR, t.ONE_MINUS_SRC_ALPHA, t.ONE, t.ONE_MINUS_SRC_ALPHA], r[e.BLEND_MODES.SCREEN] = [t.ONE, t.ONE_MINUS_SRC_COLOR, t.ONE, t.ONE_MINUS_SRC_ALPHA], r[e.BLEND_MODES.OVERLAY] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], r[e.BLEND_MODES.DARKEN] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], r[e.BLEND_MODES.LIGHTEN] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], r[e.BLEND_MODES.COLOR_DODGE] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], r[e.BLEND_MODES.COLOR_BURN] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], r[e.BLEND_MODES.HARD_LIGHT] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], r[e.BLEND_MODES.SOFT_LIGHT] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], r[e.BLEND_MODES.DIFFERENCE] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], r[e.BLEND_MODES.EXCLUSION] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], r[e.BLEND_MODES.HUE] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], r[e.BLEND_MODES.SATURATION] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], r[e.BLEND_MODES.COLOR] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], r[e.BLEND_MODES.LUMINOSITY] = [t.ONE, t.ONE_MINUS_SRC_ALPHA], r[e.BLEND_MODES.NONE] = [0, 0], r[e.BLEND_MODES.NORMAL_NPM] = [t.SRC_ALPHA, t.ONE_MINUS_SRC_ALPHA, t.ONE, t.ONE_MINUS_SRC_ALPHA], r[e.BLEND_MODES.ADD_NPM] = [t.SRC_ALPHA, t.ONE, t.ONE, t.ONE], r[e.BLEND_MODES.SCREEN_NPM] = [t.SRC_ALPHA, t.ONE_MINUS_SRC_COLOR, t.ONE, t.ONE_MINUS_SRC_ALPHA], r[e.BLEND_MODES.SRC_IN] = [t.DST_ALPHA, t.ZERO], r[e.BLEND_MODES.SRC_OUT] = [t.ONE_MINUS_DST_ALPHA, t.ZERO], r[e.BLEND_MODES.SRC_ATOP] = [t.DST_ALPHA, t.ONE_MINUS_SRC_ALPHA], r[e.BLEND_MODES.DST_OVER] = [t.ONE_MINUS_DST_ALPHA, t.ONE], r[e.BLEND_MODES.DST_IN] = [t.ZERO, t.SRC_ALPHA], r[e.BLEND_MODES.DST_OUT] = [t.ZERO, t.ONE_MINUS_SRC_ALPHA], r[e.BLEND_MODES.DST_ATOP] = [t.ONE_MINUS_DST_ALPHA, t.SRC_ALPHA], r[e.BLEND_MODES.XOR] = [t.ONE_MINUS_DST_ALPHA, t.ONE_MINUS_SRC_ALPHA], r[e.BLEND_MODES.SUBTRACT] = [t.ONE, t.ONE, t.ONE, t.ONE, t.FUNC_REVERSE_SUBTRACT, t.FUNC_ADD], r
                                    }(t), this.set(this.defaultState), this.reset()
                                }, r.prototype.set = function (t) {
                                    if (t = t || this.defaultState, this.stateId !== t.data) {
                                        for (var e = this.stateId ^ t.data, r = 0; e;) 1 & e && this.map[r].call(this, !!(t.data & 1 << r)), e >>= 1, r++;
                                        this.stateId = t.data
                                    }
                                    for (var i = 0; i < this.checks.length; i++) this.checks[i](this, t)
                                }, r.prototype.forceState = function (t) {
                                    t = t || this.defaultState;
                                    for (var e = 0; e < this.map.length; e++) this.map[e].call(this, !!(t.data & 1 << e));
                                    for (var r = 0; r < this.checks.length; r++) this.checks[r](this, t);
                                    this.stateId = t.data
                                }, r.prototype.setBlend = function (t) {
                                    this.updateCheck(r.checkBlendMode, t), this.gl[t ? "enable" : "disable"](this.gl.BLEND)
                                }, r.prototype.setOffset = function (t) {
                                    this.updateCheck(r.checkPolygonOffset, t), this.gl[t ? "enable" : "disable"](this.gl.POLYGON_OFFSET_FILL)
                                }, r.prototype.setDepthTest = function (t) {
                                    this.gl[t ? "enable" : "disable"](this.gl.DEPTH_TEST)
                                }, r.prototype.setCullFace = function (t) {
                                    this.gl[t ? "enable" : "disable"](this.gl.CULL_FACE)
                                }, r.prototype.setFrontFace = function (t) {
                                    this.gl.frontFace(this.gl[t ? "CW" : "CCW"])
                                }, r.prototype.setBlendMode = function (t) {
                                    if (t !== this.blendMode) {
                                        this.blendMode = t;
                                        var e = this.blendModes[t],
                                            r = this.gl;
                                        2 === e.length ? r.blendFunc(e[0], e[1]) : r.blendFuncSeparate(e[0], e[1], e[2], e[3]), 6 === e.length ? (this._blendEq = !0, r.blendEquationSeparate(e[4], e[5])) : this._blendEq && (this._blendEq = !1, r.blendEquationSeparate(r.FUNC_ADD, r.FUNC_ADD))
                                    }
                                }, r.prototype.setPolygonOffset = function (t, e) {
                                    this.gl.polygonOffset(t, e)
                                }, r.prototype.reset = function () {
                                    this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL, !1), this.forceState(0), this._blendEq = !0, this.blendMode = -1, this.setBlendMode(0)
                                }, r.prototype.updateCheck = function (t, e) {
                                    var r = this.checks.indexOf(t);
                                    e && -1 === r ? this.checks.push(t) : e || -1 === r || this.checks.splice(r, 1)
                                }, r.checkBlendMode = function (t, e) {
                                    t.setBlendMode(e.blendMode)
                                }, r.checkPolygonOffset = function (t, e) {
                                    t.setPolygonOffset(e.polygonOffset, 0)
                                }, r
                            }(Zr),
                            Tn = function (t) {
                                function r(e) {
                                    t.call(this, e), this.count = 0, this.checkCount = 0, this.maxIdle = V.GC_MAX_IDLE, this.checkCountMax = V.GC_MAX_CHECK_COUNT, this.mode = V.GC_MODE
                                }
                                return t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r, r.prototype.postrender = function () {
                                    this.renderer.renderingToScreen && (this.count++, this.mode !== e.GC_MODES.MANUAL && (this.checkCount++, this.checkCount > this.checkCountMax && (this.checkCount = 0, this.run())))
                                }, r.prototype.run = function () {
                                    for (var t = this.renderer.texture, e = t.managedTextures, r = !1, i = 0; i < e.length; i++) {
                                        var n = e[i];
                                        !n.framebuffer && this.count - n.touched > this.maxIdle && (t.destroyTexture(n, !0), e[i] = null, r = !0)
                                    }
                                    if (r) {
                                        for (var o = 0, s = 0; s < e.length; s++) null !== e[s] && (e[o++] = e[s]);
                                        e.length = o
                                    }
                                }, r.prototype.unload = function (t) {
                                    var e = this.renderer.textureSystem;
                                    t._texture && t._texture._glRenderTargets && e.destroyTexture(t._texture);
                                    for (var r = t.children.length - 1; r >= 0; r--) this.unload(t.children[r])
                                }, r
                            }(Zr),
                            wn = function (t) {
                                this.texture = t, this.width = -1, this.height = -1, this.dirtyId = -1, this.dirtyStyleId = -1, this.mipmap = !1, this.wrapMode = 33071, this.type = 6408, this.internalFormat = 5121
                            },
                            Sn = function (t) {
                                function r(e) {
                                    t.call(this, e), this.boundTextures = [], this.currentLocation = -1, this.managedTextures = [], this._unknownBoundTextures = !1, this.unknownTexture = new Hr
                                }
                                return t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r, r.prototype.contextChange = function () {
                                    var t = this.gl = this.renderer.gl;
                                    this.CONTEXT_UID = this.renderer.CONTEXT_UID, this.webGLVersion = this.renderer.context.webGLVersion;
                                    var e = t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS);
                                    this.boundTextures.length = e;
                                    for (var r = 0; r < e; r++) this.boundTextures[r] = null;
                                    this.emptyTextures = {};
                                    var i = new wn(t.createTexture());
                                    t.bindTexture(t.TEXTURE_2D, i.texture), t.texImage2D(t.TEXTURE_2D, 0, t.RGBA, 1, 1, 0, t.RGBA, t.UNSIGNED_BYTE, new Uint8Array(4)), this.emptyTextures[t.TEXTURE_2D] = i, this.emptyTextures[t.TEXTURE_CUBE_MAP] = new wn(t.createTexture()), t.bindTexture(t.TEXTURE_CUBE_MAP, this.emptyTextures[t.TEXTURE_CUBE_MAP].texture);
                                    for (var n = 0; n < 6; n++) t.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X + n, 0, t.RGBA, 1, 1, 0, t.RGBA, t.UNSIGNED_BYTE, null);
                                    t.texParameteri(t.TEXTURE_CUBE_MAP, t.TEXTURE_MAG_FILTER, t.LINEAR), t.texParameteri(t.TEXTURE_CUBE_MAP, t.TEXTURE_MIN_FILTER, t.LINEAR);
                                    for (var o = 0; o < this.boundTextures.length; o++) this.bind(null, o)
                                }, r.prototype.bind = function (t, e) {
                                    void 0 === e && (e = 0);
                                    var r = this.gl;
                                    if (t) {
                                        if ((t = t.baseTexture || t).valid) {
                                            t.touched = this.renderer.textureGC.count;
                                            var i = t._glTextures[this.CONTEXT_UID] || this.initTexture(t);
                                            this.boundTextures[e] !== t && (this.currentLocation !== e && (this.currentLocation = e, r.activeTexture(r.TEXTURE0 + e)), r.bindTexture(t.target, i.texture)), i.dirtyId !== t.dirtyId && (this.currentLocation !== e && (this.currentLocation = e, r.activeTexture(r.TEXTURE0 + e)), this.updateTexture(t)), this.boundTextures[e] = t
                                        }
                                    } else this.currentLocation !== e && (this.currentLocation = e, r.activeTexture(r.TEXTURE0 + e)), r.bindTexture(r.TEXTURE_2D, this.emptyTextures[r.TEXTURE_2D].texture), this.boundTextures[e] = null
                                }, r.prototype.reset = function () {
                                    this._unknownBoundTextures = !0, this.currentLocation = -1;
                                    for (var t = 0; t < this.boundTextures.length; t++) this.boundTextures[t] = this.unknownTexture
                                }, r.prototype.unbind = function (t) {
                                    var e = this.gl,
                                        r = this.boundTextures;
                                    if (this._unknownBoundTextures) {
                                        this._unknownBoundTextures = !1;
                                        for (var i = 0; i < r.length; i++) r[i] === this.unknownTexture && this.bind(null, i)
                                    }
                                    for (var n = 0; n < r.length; n++) r[n] === t && (this.currentLocation !== n && (e.activeTexture(e.TEXTURE0 + n), this.currentLocation = n), e.bindTexture(e.TEXTURE_2D, this.emptyTextures[t.target].texture), r[n] = null)
                                }, r.prototype.initTexture = function (t) {
                                    var e = new wn(this.gl.createTexture());
                                    return e.dirtyId = -1, t._glTextures[this.CONTEXT_UID] = e, this.managedTextures.push(t), t.on("dispose", this.destroyTexture, this), e
                                }, r.prototype.initTextureType = function (t, r) {
                                    if (r.internalFormat = t.format, r.type = t.type, 2 === this.webGLVersion) {
                                        var i = this.renderer.gl;
                                        t.type === i.FLOAT && t.format === i.RGBA && (r.internalFormat = i.RGBA32F), t.type === e.TYPES.HALF_FLOAT && (r.type = i.HALF_FLOAT), r.type === i.HALF_FLOAT && t.format === i.RGBA && (r.internalFormat = i.RGBA16F)
                                    }
                                }, r.prototype.updateTexture = function (t) {
                                    var e = t._glTextures[this.CONTEXT_UID];
                                    if (e) {
                                        var r = this.renderer;
                                        if (this.initTextureType(t, e), t.resource && t.resource.upload(r, t, e));
                                        else {
                                            var i = t.realWidth,
                                                n = t.realHeight,
                                                o = r.gl;
                                            (e.width !== i || e.height !== n || e.dirtyId < 0) && (e.width = i, e.height = n, o.texImage2D(t.target, 0, e.internalFormat, i, n, 0, t.format, e.type, null))
                                        }
                                        t.dirtyStyleId !== e.dirtyStyleId && this.updateTextureStyle(t), e.dirtyId = t.dirtyId
                                    }
                                }, r.prototype.destroyTexture = function (t, e) {
                                    var r = this.gl;
                                    if ((t = t.baseTexture || t)._glTextures[this.CONTEXT_UID] && (this.unbind(t), r.deleteTexture(t._glTextures[this.CONTEXT_UID].texture), t.off("dispose", this.destroyTexture, this), delete t._glTextures[this.CONTEXT_UID], !e)) {
                                        var i = this.managedTextures.indexOf(t); - 1 !== i && Oe(this.managedTextures, i, 1)
                                    }
                                }, r.prototype.updateTextureStyle = function (t) {
                                    var r = t._glTextures[this.CONTEXT_UID];
                                    r && (t.mipmap !== e.MIPMAP_MODES.POW2 && 2 === this.webGLVersion || t.isPowerOfTwo ? r.mipmap = t.mipmap >= 1 : r.mipmap = 0, 2 === this.webGLVersion || t.isPowerOfTwo ? r.wrapMode = t.wrapMode : r.wrapMode = e.WRAP_MODES.CLAMP, t.resource && t.resource.style(this.renderer, t, r) || this.setStyle(t, r), r.dirtyStyleId = t.dirtyStyleId)
                                }, r.prototype.setStyle = function (t, r) {
                                    var i = this.gl;
                                    if (r.mipmap && i.generateMipmap(t.target), i.texParameteri(t.target, i.TEXTURE_WRAP_S, r.wrapMode), i.texParameteri(t.target, i.TEXTURE_WRAP_T, r.wrapMode), r.mipmap) {
                                        i.texParameteri(t.target, i.TEXTURE_MIN_FILTER, t.scaleMode ? i.LINEAR_MIPMAP_LINEAR : i.NEAREST_MIPMAP_NEAREST);
                                        var n = this.renderer.context.extensions.anisotropicFiltering;
                                        if (n && t.anisotropicLevel > 0 && t.scaleMode === e.SCALE_MODES.LINEAR) {
                                            var o = Math.min(t.anisotropicLevel, i.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT));
                                            i.texParameterf(t.target, n.TEXTURE_MAX_ANISOTROPY_EXT, o)
                                        }
                                    } else i.texParameteri(t.target, i.TEXTURE_MIN_FILTER, t.scaleMode ? i.LINEAR : i.NEAREST);
                                    i.texParameteri(t.target, i.TEXTURE_MAG_FILTER, t.scaleMode ? i.LINEAR : i.NEAREST)
                                }, r
                            }(Zr),
                            In = {
                                FilterSystem: bi,
                                BatchSystem: Ti,
                                ContextSystem: Si,
                                FramebufferSystem: Ii,
                                GeometrySystem: Oi,
                                MaskSystem: cn,
                                ScissorSystem: pn,
                                StencilSystem: fn,
                                ProjectionSystem: mn,
                                RenderTextureSystem: vn,
                                ShaderSystem: bn,
                                StateSystem: En,
                                TextureGCSystem: Tn,
                                TextureSystem: Sn
                            },
                            Pn = new $e,
                            An = function (t) {
                                function r(r, i) {
                                    t.call(this), (i = Object.assign({}, V.RENDER_OPTIONS, i)).roundPixels && (V.ROUND_PIXELS = i.roundPixels, Ne("5.0.0", "Renderer roundPixels option is deprecated, please use PIXI.settings.ROUND_PIXELS", 2)), this.options = i, this.type = e.RENDERER_TYPE.UNKNOWN, this.screen = new ar(0, 0, i.width, i.height), this.view = i.view || v.createElement("canvas"), this.resolution = i.resolution || V.RESOLUTION, this.transparent = i.transparent, this.autoDensity = i.autoDensity || i.autoResize || !1, this.preserveDrawingBuffer = i.preserveDrawingBuffer, this.clearBeforeRender = i.clearBeforeRender, this._backgroundColor = 0, this._backgroundColorRgba = [0, 0, 0, 0], this._backgroundColorString = "#000000", this.backgroundColor = i.backgroundColor || this._backgroundColor, this._tempDisplayObjectParent = new mr, this._lastObjectRendered = this._tempDisplayObjectParent, this.plugins = {}
                                }
                                t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r;
                                var i = {
                                    width: {
                                        configurable: !0
                                    },
                                    height: {
                                        configurable: !0
                                    },
                                    backgroundColor: {
                                        configurable: !0
                                    }
                                };
                                return r.prototype.initPlugins = function (t) {
                                    for (var e in t) this.plugins[e] = new t[e](this)
                                }, i.width.get = function () {
                                    return this.view.width
                                }, i.height.get = function () {
                                    return this.view.height
                                }, r.prototype.resize = function (t, e) {
                                    this.screen.width = t, this.screen.height = e, this.view.width = t * this.resolution, this.view.height = e * this.resolution, this.autoDensity && (this.view.style.width = t + "px", this.view.style.height = e + "px")
                                }, r.prototype.generateTexture = function (t, e, r, i) {
                                    0 === (i = i || t.getLocalBounds()).width && (i.width = 1), 0 === i.height && (i.height = 1);
                                    var n = oi.create(0 | i.width, 0 | i.height, e, r);
                                    return Pn.tx = -i.x, Pn.ty = -i.y, this.render(t, n, !1, Pn, !!t.parent), n
                                }, r.prototype.destroy = function (t) {
                                    for (var r in this.plugins) this.plugins[r].destroy(), this.plugins[r] = null;
                                    t && this.view.parentNode && this.view.parentNode.removeChild(this.view), this.plugins = null, this.type = e.RENDERER_TYPE.UNKNOWN, this.view = null, this.screen = null, this.resolution = 0, this.transparent = !1, this.autoDensity = !1, this.blendModes = null, this.options = null, this.preserveDrawingBuffer = !1, this.clearBeforeRender = !1, this._backgroundColor = 0, this._backgroundColorRgba = null, this._backgroundColorString = null, this._tempDisplayObjectParent = null, this._lastObjectRendered = null
                                }, i.backgroundColor.get = function () {
                                    return this._backgroundColor
                                }, i.backgroundColor.set = function (t) {
                                    this._backgroundColor = t, this._backgroundColorString = ge(t), me(t, this._backgroundColorRgba)
                                }, Object.defineProperties(r.prototype, i), r
                            }(W),
                            On = function (t) {
                                function r(i) {
                                    void 0 === i && (i = {}), t.call(this, "WebGL", i), i = this.options, this.type = e.RENDERER_TYPE.WEBGL, this.gl = null, this.CONTEXT_UID = 0, this.runners = {
                                        destroy: new Rr("destroy"),
                                        contextChange: new Rr("contextChange", 1),
                                        reset: new Rr("reset"),
                                        update: new Rr("update"),
                                        postrender: new Rr("postrender"),
                                        prerender: new Rr("prerender"),
                                        resize: new Rr("resize", 2)
                                    }, this.globalUniforms = new _i({
                                        projectionMatrix: new $e
                                    }, !0), this.addSystem(cn, "mask").addSystem(Si, "context").addSystem(En, "state").addSystem(bn, "shader").addSystem(Sn, "texture").addSystem(Oi, "geometry").addSystem(Ii, "framebuffer").addSystem(pn, "scissor").addSystem(fn, "stencil").addSystem(mn, "projection").addSystem(Tn, "textureGC").addSystem(bi, "filter").addSystem(vn, "renderTexture").addSystem(Ti, "batch"), this.initPlugins(r.__plugins), i.context ? this.context.initFromContext(i.context) : this.context.initFromOptions({
                                        alpha: this.transparent,
                                        antialias: i.antialias,
                                        premultipliedAlpha: this.transparent && "notMultiplied" !== this.transparent,
                                        stencil: !0,
                                        preserveDrawingBuffer: i.preserveDrawingBuffer,
                                        powerPreference: this.options.powerPreference
                                    }), this.renderingToScreen = !0, pe(2 === this.context.webGLVersion ? "WebGL 2" : "WebGL 1"), this.resize(this.options.width, this.options.height)
                                }
                                return t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r, r.create = function (t) {
                                    if (fe()) return new r(t);
                                    throw new Error('WebGL unsupported in this browser, use "pixi.js-legacy" for fallback canvas2d support.')
                                }, r.prototype.addSystem = function (t, e) {
                                    e || (e = t.name);
                                    var r = new t(this);
                                    if (this[e]) throw new Error('Whoops! The name "' + e + '" is already in use');
                                    for (var i in this[e] = r, this.runners) this.runners[i].add(r);
                                    return this
                                }, r.prototype.render = function (t, e, r, i, n) {
                                    if (this.renderingToScreen = !e, this.runners.prerender.run(), this.emit("prerender"), this.projection.transform = i, !this.context.isLost) {
                                        if (e || (this._lastObjectRendered = t), !n) {
                                            var o = t.parent;
                                            t.parent = this._tempDisplayObjectParent, t.updateTransform(), t.parent = o
                                        }
                                        this.renderTexture.bind(e), this.batch.currentRenderer.start(), (void 0 !== r ? r : this.clearBeforeRender) && this.renderTexture.clear(), t.render(this), this.batch.currentRenderer.flush(), e && e.baseTexture.update(), this.runners.postrender.run(), this.projection.transform = null, this.emit("postrender")
                                    }
                                }, r.prototype.resize = function (e, r) {
                                    t.prototype.resize.call(this, e, r), this.runners.resize.run(e, r)
                                }, r.prototype.reset = function () {
                                    return this.runners.reset.run(), this
                                }, r.prototype.clear = function () {
                                    this.framebuffer.bind(), this.framebuffer.clear()
                                }, r.prototype.destroy = function (e) {
                                    for (var r in this.runners.destroy.run(), this.runners) this.runners[r].destroy();
                                    t.prototype.destroy.call(this, e), this.gl = null
                                }, r.registerPlugin = function (t, e) {
                                    r.__plugins = r.__plugins || {}, r.__plugins[t] = e
                                }, r
                            }(An);

                        function Dn(t) {
                            return On.create(t)
                        }
                        var Cn = "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n    gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n    vTextureCoord = aTextureCoord;\n}",
                            Mn = "attribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n    vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n    return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n    return aVertexPosition * (outputFrame.zw * inputSize.zw);\n}\n\nvoid main(void)\n{\n    gl_Position = filterVertexPosition();\n    vTextureCoord = filterTextureCoord();\n}\n",
                            Rn = function (t) {
                                function e() {
                                    t.apply(this, arguments)
                                }
                                return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.from = function (t, r) {
                                    return new e(new zr(t, r))
                                }, e
                            }(Hr),
                            Nn = function () {
                                this.texArray = null, this.blend = 0, this.type = e.DRAW_MODES.TRIANGLES, this.start = 0, this.size = 0, this.data = null
                            },
                            Ln = function () {
                                this.elements = [], this.ids = [], this.count = 0
                            };
                        Ln.prototype.clear = function () {
                            for (var t = 0; t < this.count; t++) this.elements[t] = null;
                            this.count = 0
                        };
                        var Fn = function (t) {
                                this.rawBinaryData = new ArrayBuffer(t), this.uint32View = new Uint32Array(this.rawBinaryData), this.float32View = new Float32Array(this.rawBinaryData)
                            },
                            Bn = {
                                int8View: {
                                    configurable: !0
                                },
                                uint8View: {
                                    configurable: !0
                                },
                                int16View: {
                                    configurable: !0
                                },
                                uint16View: {
                                    configurable: !0
                                },
                                int32View: {
                                    configurable: !0
                                }
                            };
                        Bn.int8View.get = function () {
                            return this._int8View || (this._int8View = new Int8Array(this.rawBinaryData)), this._int8View
                        }, Bn.uint8View.get = function () {
                            return this._uint8View || (this._uint8View = new Uint8Array(this.rawBinaryData)), this._uint8View
                        }, Bn.int16View.get = function () {
                            return this._int16View || (this._int16View = new Int16Array(this.rawBinaryData)), this._int16View
                        }, Bn.uint16View.get = function () {
                            return this._uint16View || (this._uint16View = new Uint16Array(this.rawBinaryData)), this._uint16View
                        }, Bn.int32View.get = function () {
                            return this._int32View || (this._int32View = new Int32Array(this.rawBinaryData)), this._int32View
                        }, Fn.prototype.view = function (t) {
                            return this[t + "View"]
                        }, Fn.prototype.destroy = function () {
                            this.rawBinaryData = null, this._int8View = null, this._uint8View = null, this._int16View = null, this._uint16View = null, this._int32View = null, this.uint32View = null, this.float32View = null
                        }, Fn.sizeOf = function (t) {
                            switch (t) {
                                case "int8":
                                case "uint8":
                                    return 1;
                                case "int16":
                                case "uint16":
                                    return 2;
                                case "int32":
                                case "uint32":
                                case "float32":
                                    return 4;
                                default:
                                    throw new Error(t + " isn't a valid view type")
                            }
                        }, Object.defineProperties(Fn.prototype, Bn);
                        var Un = function (t) {
                            function r(e) {
                                t.call(this, e), this.shaderGenerator = null, this.geometryClass = null, this.vertexSize = null, this.state = nn.for2d(), this.size = 4 * V.SPRITE_BATCH_SIZE, this._vertexCount = 0, this._indexCount = 0, this._bufferedElements = [], this._bufferedTextures = [], this._bufferSize = 0, this._shader = null, this._packedGeometries = [], this._packedGeometryPoolSize = 2, this._flushId = 0, this._aBuffers = {}, this._iBuffers = {}, this.MAX_TEXTURES = 1, this.renderer.on("prerender", this.onPrerender, this), e.runners.contextChange.add(this), this._dcIndex = 0, this._aIndex = 0, this._iIndex = 0, this._attributeBuffer = null, this._indexBuffer = null, this._tempBoundTextures = []
                            }
                            return t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r, r.prototype.contextChange = function () {
                                var t = this.renderer.gl;
                                V.PREFER_ENV === e.ENV.WEBGL_LEGACY ? this.MAX_TEXTURES = 1 : (this.MAX_TEXTURES = Math.min(t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS), V.SPRITE_MAX_TEXTURES), this.MAX_TEXTURES = Ki(this.MAX_TEXTURES, t)), this._shader = this.shaderGenerator.generateShader(this.MAX_TEXTURES);
                                for (var r = 0; r < this._packedGeometryPoolSize; r++) this._packedGeometries[r] = new this.geometryClass;
                                this.initFlushBuffers()
                            }, r.prototype.initFlushBuffers = function () {
                                for (var t = r._drawCallPool, e = r._textureArrayPool, i = this.size / 4, n = Math.floor(i / this.MAX_TEXTURES) + 1; t.length < i;) t.push(new Nn);
                                for (; e.length < n;) e.push(new Ln);
                                for (var o = 0; o < this.MAX_TEXTURES; o++) this._tempBoundTextures[o] = null
                            }, r.prototype.onPrerender = function () {
                                this._flushId = 0
                            }, r.prototype.render = function (t) {
                                t._texture.valid && (this._vertexCount + t.vertexData.length / 2 > this.size && this.flush(), this._vertexCount += t.vertexData.length / 2, this._indexCount += t.indices.length, this._bufferedTextures[this._bufferSize] = t._texture.baseTexture, this._bufferedElements[this._bufferSize++] = t)
                            }, r.prototype.buildTexturesAndDrawCalls = function () {
                                var t = this._bufferedTextures,
                                    e = this.MAX_TEXTURES,
                                    i = r._textureArrayPool,
                                    n = this.renderer.batch,
                                    o = this._tempBoundTextures,
                                    s = this.renderer.textureGC.count,
                                    a = ++Hr._globalBatch,
                                    h = 0,
                                    u = i[0],
                                    l = 0;
                                n.copyBoundTextures(o, e);
                                for (var c = 0; c < this._bufferSize; ++c) {
                                    var d = t[c];
                                    t[c] = null, d._batchEnabled !== a && (u.count >= e && (n.boundArray(u, o, a, e), this.buildDrawCalls(u, l, c), l = c, u = i[++h], ++a), d._batchEnabled = a, d.touched = s, u.elements[u.count++] = d)
                                }
                                u.count > 0 && (n.boundArray(u, o, a, e), this.buildDrawCalls(u, l, this._bufferSize), ++h, ++a);
                                for (var p = 0; p < o.length; p++) o[p] = null;
                                Hr._globalBatch = a
                            }, r.prototype.buildDrawCalls = function (t, e, i) {
                                var n = this._bufferedElements,
                                    o = this._attributeBuffer,
                                    s = this._indexBuffer,
                                    a = this.vertexSize,
                                    h = r._drawCallPool,
                                    u = this._dcIndex,
                                    l = this._aIndex,
                                    c = this._iIndex,
                                    d = h[u];
                                d.start = this._iIndex, d.texArray = t;
                                for (var p = e; p < i; ++p) {
                                    var f = n[p],
                                        m = f._texture.baseTexture,
                                        g = ye[m.alphaMode ? 1 : 0][f.blendMode];
                                    n[p] = null, e < p && d.blend !== g && (d.size = c - d.start, e = p, (d = h[++u]).texArray = t, d.start = c), this.packInterleavedGeometry(f, o, s, l, c), l += f.vertexData.length / 2 * a, c += f.indices.length, d.blend = g
                                }
                                e < i && (d.size = c - d.start, ++u), this._dcIndex = u, this._aIndex = l, this._iIndex = c
                            }, r.prototype.bindAndClearTexArray = function (t) {
                                for (var e = this.renderer.texture, r = 0; r < t.count; r++) e.bind(t.elements[r], t.ids[r]), t.elements[r] = null;
                                t.count = 0
                            }, r.prototype.updateGeometry = function () {
                                var t = this._packedGeometries,
                                    e = this._attributeBuffer,
                                    r = this._indexBuffer;
                                V.CAN_UPLOAD_SAME_BUFFER ? (t[this._flushId]._buffer.update(e.rawBinaryData), t[this._flushId]._indexBuffer.update(r), this.renderer.geometry.updateBuffers()) : (this._packedGeometryPoolSize <= this._flushId && (this._packedGeometryPoolSize++, t[this._flushId] = new this.geometryClass), t[this._flushId]._buffer.update(e.rawBinaryData), t[this._flushId]._indexBuffer.update(r), this.renderer.geometry.bind(t[this._flushId]), this.renderer.geometry.updateBuffers(), this._flushId++)
                            }, r.prototype.drawBatches = function () {
                                for (var t = this._dcIndex, e = this.renderer, i = e.gl, n = e.state, o = r._drawCallPool, s = null, a = 0; a < t; a++) {
                                    var h = o[a],
                                        u = h.texArray,
                                        l = h.type,
                                        c = h.size,
                                        d = h.start,
                                        p = h.blend;
                                    s !== u && (s = u, this.bindAndClearTexArray(u)), this.state.blendMode = p, n.set(this.state), i.drawElements(l, c, i.UNSIGNED_SHORT, 2 * d)
                                }
                            }, r.prototype.flush = function () {
                                0 !== this._vertexCount && (this._attributeBuffer = this.getAttributeBuffer(this._vertexCount), this._indexBuffer = this.getIndexBuffer(this._indexCount), this._aIndex = 0, this._iIndex = 0, this._dcIndex = 0, this.buildTexturesAndDrawCalls(), this.updateGeometry(), this.drawBatches(), this._bufferSize = 0, this._vertexCount = 0, this._indexCount = 0)
                            }, r.prototype.start = function () {
                                this.renderer.state.set(this.state), this.renderer.shader.bind(this._shader), V.CAN_UPLOAD_SAME_BUFFER && this.renderer.geometry.bind(this._packedGeometries[this._flushId])
                            }, r.prototype.stop = function () {
                                this.flush()
                            }, r.prototype.destroy = function () {
                                for (var e = 0; e < this._packedGeometryPoolSize; e++) this._packedGeometries[e] && this._packedGeometries[e].destroy();
                                this.renderer.off("prerender", this.onPrerender, this), this._aBuffers = null, this._iBuffers = null, this._packedGeometries = null, this._attributeBuffer = null, this._indexBuffer = null, this._shader && (this._shader.destroy(), this._shader = null), t.prototype.destroy.call(this)
                            }, r.prototype.getAttributeBuffer = function (t) {
                                var e = Ie(Math.ceil(t / 8)),
                                    r = Ae(e),
                                    i = 8 * e;
                                this._aBuffers.length <= r && (this._iBuffers.length = r + 1);
                                var n = this._aBuffers[i];
                                return n || (this._aBuffers[i] = n = new Fn(i * this.vertexSize * 4)), n
                            }, r.prototype.getIndexBuffer = function (t) {
                                var e = Ie(Math.ceil(t / 12)),
                                    r = Ae(e),
                                    i = 12 * e;
                                this._iBuffers.length <= r && (this._iBuffers.length = r + 1);
                                var n = this._iBuffers[r];
                                return n || (this._iBuffers[r] = n = new Uint16Array(i)), n
                            }, r.prototype.packInterleavedGeometry = function (t, e, r, i, n) {
                                for (var o = e.uint32View, s = e.float32View, a = i / this.vertexSize, h = t.uvs, u = t.indices, l = t.vertexData, c = t._texture.baseTexture._batchLocation, d = Math.min(t.worldAlpha, 1), p = d < 1 && t._texture.baseTexture.alphaMode ? be(t._tintRGB, d) : t._tintRGB + (255 * d << 24), f = 0; f < l.length; f += 2) s[i++] = l[f], s[i++] = l[f + 1], s[i++] = h[f], s[i++] = h[f + 1], o[i++] = p, s[i++] = c;
                                for (var m = 0; m < u.length; m++) r[n++] = a + u[m]
                            }, r
                        }(Ei);
                        Un._drawCallPool = [], Un._textureArrayPool = [];
                        var kn = function (t, e) {
                            if (this.vertexSrc = t, this.fragTemplate = e, this.programCache = {}, this.defaultGroupCache = {}, e.indexOf("%count%") < 0) throw new Error('Fragment template must contain "%count%".');
                            if (e.indexOf("%forloop%") < 0) throw new Error('Fragment template must contain "%forloop%".')
                        };
                        kn.prototype.generateShader = function (t) {
                            if (!this.programCache[t]) {
                                for (var e = new Int32Array(t), r = 0; r < t; r++) e[r] = r;
                                this.defaultGroupCache[t] = _i.from({
                                    uSamplers: e
                                }, !0);
                                var i = this.fragTemplate;
                                i = (i = i.replace(/%count%/gi, "" + t)).replace(/%forloop%/gi, this.generateSampleSrc(t)), this.programCache[t] = new Qi(this.vertexSrc, i)
                            }
                            var n = {
                                tint: new Float32Array([1, 1, 1, 1]),
                                translationMatrix: new $e,
                                default: this.defaultGroupCache[t]
                            };
                            return new en(this.programCache[t], n)
                        }, kn.prototype.generateSampleSrc = function (t) {
                            var e = "";
                            e += "\n", e += "\n";
                            for (var r = 0; r < t; r++) r > 0 && (e += "\nelse "), r < t - 1 && (e += "if(vTextureId < " + r + ".5)"), e += "\n{", e += "\n\tcolor = texture2D(uSamplers[" + r + "], vTextureCoord);", e += "\n}";
                            return e += "\n", e += "\n"
                        };
                        var Xn = function (t) {
                                function r(r) {
                                    void 0 === r && (r = !1), t.call(this), this._buffer = new ui(null, r, !1), this._indexBuffer = new ui(null, r, !0), this.addAttribute("aVertexPosition", this._buffer, 2, !1, e.TYPES.FLOAT).addAttribute("aTextureCoord", this._buffer, 2, !1, e.TYPES.FLOAT).addAttribute("aColor", this._buffer, 4, !0, e.TYPES.UNSIGNED_BYTE).addAttribute("aTextureId", this._buffer, 1, !0, e.TYPES.FLOAT).addIndex(this._indexBuffer)
                                }
                                return t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r, r
                            }(mi),
                            jn = "precision highp float;\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform vec4 tint;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nvoid main(void){\n    gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n    vTextureCoord = aTextureCoord;\n    vTextureId = aTextureId;\n    vColor = aColor * tint;\n}\n",
                            Hn = "varying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\nuniform sampler2D uSamplers[%count%];\n\nvoid main(void){\n    vec4 color;\n    %forloop%\n    gl_FragColor = color * vColor;\n}\n",
                            Gn = function () {},
                            Yn = {
                                defaultVertexSrc: {
                                    configurable: !0
                                },
                                defaultFragmentTemplate: {
                                    configurable: !0
                                }
                            };
                        Gn.create = function (t) {
                            var e = Object.assign({
                                    vertex: jn,
                                    fragment: Hn,
                                    geometryClass: Xn,
                                    vertexSize: 6
                                }, t),
                                r = e.vertex,
                                i = e.fragment,
                                n = e.vertexSize,
                                o = e.geometryClass;
                            return function (t) {
                                function e(e) {
                                    t.call(this, e), this.shaderGenerator = new kn(r, i), this.geometryClass = o, this.vertexSize = n
                                }
                                return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e
                            }(Un)
                        }, Yn.defaultVertexSrc.get = function () {
                            return jn
                        }, Yn.defaultFragmentTemplate.get = function () {
                            return Hn
                        }, Object.defineProperties(Gn, Yn);
                        var zn = Gn.create(),
                            Vn = function t(e) {
                                var r = this;
                                e = Object.assign({
                                    forceCanvas: !1
                                }, e), this.renderer = Dn(e), this.stage = new mr, t._plugins.forEach((function (t) {
                                    t.init.call(r, e)
                                }))
                            },
                            Wn = {
                                view: {
                                    configurable: !0
                                },
                                screen: {
                                    configurable: !0
                                }
                            };
                        /*!
                         * @pixi/app - v5.2.1
                         * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                         *
                         * @pixi/app is licensed under the MIT License.
                         * http://www.opensource.org/licenses/mit-license
                         */
                        Vn.registerPlugin = function (t) {
                            Vn._plugins.push(t)
                        }, Vn.prototype.render = function () {
                            this.renderer.render(this.stage)
                        }, Wn.view.get = function () {
                            return this.renderer.view
                        }, Wn.screen.get = function () {
                            return this.renderer.screen
                        }, Vn.prototype.destroy = function (t, e) {
                            var r = this,
                                i = Vn._plugins.slice(0);
                            i.reverse(), i.forEach((function (t) {
                                t.destroy.call(r)
                            })), this.stage.destroy(e), this.stage = null, this.renderer.destroy(t), this.renderer = null, this._options = null
                        }, Object.defineProperties(Vn.prototype, Wn), Vn._plugins = [];
                        var qn = function () {};
                        qn.init = function (t) {
                            var e = this;
                            Object.defineProperty(this, "resizeTo", {
                                set: function (t) {
                                    o.a.removeEventListener("resize", this.resize), this._resizeTo = t, t && (o.a.addEventListener("resize", this.resize), this.resize())
                                },
                                get: function () {
                                    return this._resizeTo
                                }
                            }), this.resize = function () {
                                e._resizeTo && (e._resizeTo === o.a ? e.renderer.resize(o.a.innerWidth, o.a.innerHeight) : e.renderer.resize(e._resizeTo.clientWidth, e._resizeTo.clientHeight))
                            }, this._resizeTo = null, this.resizeTo = t.resizeTo || null
                        }, qn.destroy = function () {
                            this.resizeTo = null, this.resize = null
                        }, Vn.registerPlugin(qn);
                        /*!
                         * @pixi/extract - v5.2.1
                         * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                         *
                         * @pixi/extract is licensed under the MIT License.
                         * http://www.opensource.org/licenses/mit-license
                         */
                        var Kn = new ar,
                            Zn = function (t) {
                                this.renderer = t, t.extract = this
                            };
                        Zn.prototype.image = function (t, e, r) {
                            var i = new g;
                            return i.src = this.base64(t, e, r), i
                        }, Zn.prototype.base64 = function (t, e, r) {
                            return this.canvas(t).toDataURL(e, r)
                        }, Zn.prototype.canvas = function (t) {
                            var e, r, i, n = this.renderer,
                                o = !1,
                                s = !1;
                            t && (t instanceof oi ? i = t : (i = this.renderer.generateTexture(t), s = !0)), i ? (e = i.baseTexture.resolution, r = i.frame, o = !1, n.renderTexture.bind(i)) : (e = this.renderer.resolution, o = !0, (r = Kn).width = this.renderer.width, r.height = this.renderer.height, n.renderTexture.bind(null));
                            var a = Math.floor(r.width * e + 1e-4),
                                h = Math.floor(r.height * e + 1e-4),
                                u = new Ue(a, h, 1),
                                l = new Uint8Array(4 * a * h),
                                c = n.gl;
                            c.readPixels(r.x * e, r.y * e, a, h, c.RGBA, c.UNSIGNED_BYTE, l);
                            var d = u.context.getImageData(0, 0, a, h);
                            return Zn.arrayPostDivide(l, d.data), u.context.putImageData(d, 0, 0), o && (u.context.scale(1, -1), u.context.drawImage(u.canvas, 0, -h)), s && i.destroy(!0), u.canvas
                        }, Zn.prototype.pixels = function (t) {
                            var e, r, i, n = this.renderer,
                                o = !1;
                            t && (t instanceof oi ? i = t : (i = this.renderer.generateTexture(t), o = !0)), i ? (e = i.baseTexture.resolution, r = i.frame, n.renderTexture.bind(i)) : (e = n.resolution, (r = Kn).width = n.width, r.height = n.height, n.renderTexture.bind(null));
                            var s = r.width * e,
                                a = r.height * e,
                                h = new Uint8Array(4 * s * a),
                                u = n.gl;
                            return u.readPixels(r.x * e, r.y * e, s, a, u.RGBA, u.UNSIGNED_BYTE, h), o && i.destroy(!0), Zn.arrayPostDivide(h, h), h
                        }, Zn.prototype.destroy = function () {
                            this.renderer.extract = null, this.renderer = null
                        }, Zn.arrayPostDivide = function (t, e) {
                            for (var r = 0; r < t.length; r += 4) {
                                var i = e[r + 3] = t[r + 3];
                                0 !== i ? (e[r] = Math.round(Math.min(255 * t[r] / i, 255)), e[r + 1] = Math.round(Math.min(255 * t[r + 1] / i, 255)), e[r + 2] = Math.round(Math.min(255 * t[r + 2] / i, 255))) : (e[r] = t[r], e[r + 1] = t[r + 1], e[r + 2] = t[r + 2])
                            }
                        };
                        var $n = function (t, e) {
                                e = e || {};
                                for (var r = {
                                        key: ["source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor"],
                                        q: {
                                            name: "queryKey",
                                            parser: /(?:^|&)([^&=]*)=?([^&]*)/g
                                        },
                                        parser: {
                                            strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
                                            loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
                                        }
                                    }, i = r.parser[e.strictMode ? "strict" : "loose"].exec(t), n = {}, o = 14; o--;) n[r.key[o]] = i[o] || "";
                                return n[r.q.name] = {}, n[r.key[12]].replace(r.q.parser, (function (t, e, i) {
                                    e && (n[r.q.name][e] = i)
                                })), n
                            },
                            Jn = function (t) {
                                return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, "default") ? t.default : t
                            }(u((function (t, e) {
                                Object.defineProperty(e, "__esModule", {
                                    value: !0
                                });
                                var r = function () {
                                    function t(t, e) {
                                        for (var r = 0; r < e.length; r++) {
                                            var i = e[r];
                                            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                                        }
                                    }
                                    return function (e, r, i) {
                                        return r && t(e.prototype, r), i && t(e, i), e
                                    }
                                }();

                                function i(t, e) {
                                    if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                                }
                                var n = function () {
                                    function t(e, r, n) {
                                        void 0 === r && (r = !1), i(this, t), this._fn = e, this._once = r, this._thisArg = n, this._next = this._prev = this._owner = null
                                    }
                                    return r(t, [{
                                        key: "detach",
                                        value: function () {
                                            return null !== this._owner && (this._owner.detach(this), !0)
                                        }
                                    }]), t
                                }();

                                function o(t, e) {
                                    return t._head ? (t._tail._next = e, e._prev = t._tail, t._tail = e) : (t._head = e, t._tail = e), e._owner = t, e
                                }
                                var s = function () {
                                    function t() {
                                        i(this, t), this._head = this._tail = void 0
                                    }
                                    return r(t, [{
                                        key: "handlers",
                                        value: function () {
                                            var t = !(arguments.length <= 0 || void 0 === arguments[0]) && arguments[0],
                                                e = this._head;
                                            if (t) return !!e;
                                            for (var r = []; e;) r.push(e), e = e._next;
                                            return r
                                        }
                                    }, {
                                        key: "has",
                                        value: function (t) {
                                            if (!(t instanceof n)) throw new Error("MiniSignal#has(): First arg must be a MiniSignalBinding object.");
                                            return t._owner === this
                                        }
                                    }, {
                                        key: "dispatch",
                                        value: function () {
                                            var t = arguments,
                                                e = this._head;
                                            if (!e) return !1;
                                            for (; e;) e._once && this.detach(e), e._fn.apply(e._thisArg, t), e = e._next;
                                            return !0
                                        }
                                    }, {
                                        key: "add",
                                        value: function (t) {
                                            var e = arguments.length <= 1 || void 0 === arguments[1] ? null : arguments[1];
                                            if ("function" != typeof t) throw new Error("MiniSignal#add(): First arg must be a Function.");
                                            return o(this, new n(t, !1, e))
                                        }
                                    }, {
                                        key: "once",
                                        value: function (t) {
                                            var e = arguments.length <= 1 || void 0 === arguments[1] ? null : arguments[1];
                                            if ("function" != typeof t) throw new Error("MiniSignal#once(): First arg must be a Function.");
                                            return o(this, new n(t, !0, e))
                                        }
                                    }, {
                                        key: "detach",
                                        value: function (t) {
                                            if (!(t instanceof n)) throw new Error("MiniSignal#detach(): First arg must be a MiniSignalBinding object.");
                                            return t._owner !== this || (t._prev && (t._prev._next = t._next), t._next && (t._next._prev = t._prev), t === this._head ? (this._head = t._next, null === t._next && (this._tail = null)) : t === this._tail && (this._tail = t._prev, this._tail._next = null), t._owner = null), this
                                        }
                                    }, {
                                        key: "detachAll",
                                        value: function () {
                                            var t = this._head;
                                            if (!t) return this;
                                            for (this._head = this._tail = null; t;) t._owner = null, t = t._next;
                                            return this
                                        }
                                    }]), t
                                }();
                                s.MiniSignalBinding = n, e.default = s, t.exports = e.default
                            })));
                        /*!
                         * resource-loader - v3.0.1
                         * https://github.com/pixijs/pixi-sound
                         * Compiled Tue, 02 Jul 2019 14:06:18 UTC
                         *
                         * resource-loader is licensed under the MIT license.
                         * http://www.opensource.org/licenses/mit-license
                         */
                        function Qn() {}

                        function to(t, e, r, i) {
                            var n = 0,
                                o = t.length;
                            ! function s(a) {
                                a || n === o ? r && r(a) : i ? setTimeout((function () {
                                    e(t[n++], s)
                                }), 1) : e(t[n++], s)
                            }()
                        }

                        function eo(t) {
                            return function () {
                                if (null === t) throw new Error("Callback was already called.");
                                var e = t;
                                t = null, e.apply(this, arguments)
                            }
                        }

                        function ro(t, e) {
                            if (null == e) e = 1;
                            else if (0 === e) throw new Error("Concurrency must not be zero");
                            var r = 0,
                                i = {
                                    _tasks: [],
                                    concurrency: e,
                                    saturated: Qn,
                                    unsaturated: Qn,
                                    buffer: e / 4,
                                    empty: Qn,
                                    drain: Qn,
                                    error: Qn,
                                    started: !1,
                                    paused: !1,
                                    push: function (t, e) {
                                        n(t, !1, e)
                                    },
                                    kill: function () {
                                        r = 0, i.drain = Qn, i.started = !1, i._tasks = []
                                    },
                                    unshift: function (t, e) {
                                        n(t, !0, e)
                                    },
                                    process: function () {
                                        for (; !i.paused && r < i.concurrency && i._tasks.length;) {
                                            var e = i._tasks.shift();
                                            0 === i._tasks.length && i.empty(), (r += 1) === i.concurrency && i.saturated(), t(e.data, eo(o(e)))
                                        }
                                    },
                                    length: function () {
                                        return i._tasks.length
                                    },
                                    running: function () {
                                        return r
                                    },
                                    idle: function () {
                                        return i._tasks.length + r === 0
                                    },
                                    pause: function () {
                                        !0 !== i.paused && (i.paused = !0)
                                    },
                                    resume: function () {
                                        if (!1 !== i.paused) {
                                            i.paused = !1;
                                            for (var t = 1; t <= i.concurrency; t++) i.process()
                                        }
                                    }
                                };

                            function n(t, e, r) {
                                if (null != r && "function" != typeof r) throw new Error("task callback must be a function");
                                if (i.started = !0, null == t && i.idle()) setTimeout((function () {
                                    return i.drain()
                                }), 1);
                                else {
                                    var n = {
                                        data: t,
                                        callback: "function" == typeof r ? r : Qn
                                    };
                                    e ? i._tasks.unshift(n) : i._tasks.push(n), setTimeout((function () {
                                        return i.process()
                                    }), 1)
                                }
                            }

                            function o(t) {
                                return function () {
                                    r -= 1, t.callback.apply(t, arguments), null != arguments[0] && i.error(arguments[0], t.data), r <= i.concurrency - i.buffer && i.unsaturated(), i.idle() && i.drain(), i.process()
                                }
                            }
                            return i
                        }
                        var io = {};

                        function no(t, e) {
                            for (var r = 0; r < e.length; r++) {
                                var i = e[r];
                                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                            }
                        }

                        function oo(t, e, r) {
                            return e && no(t.prototype, e), r && no(t, r), t
                        }
                        var so = !(!o.a.XDomainRequest || "withCredentials" in new n.a),
                            ao = null;

                        function ho() {}
                        var uo = function () {
                            function t(e, r, i) {
                                if ("string" != typeof e || "string" != typeof r) throw new Error("Both name and url are required for constructing a resource.");
                                i = i || {}, this._flags = 0, this._setFlag(t.STATUS_FLAGS.DATA_URL, 0 === r.indexOf("data:")), this.name = e, this.url = r, this.extension = this._getExtension(), this.data = null, this.crossOrigin = !0 === i.crossOrigin ? "anonymous" : i.crossOrigin, this.timeout = i.timeout || 0, this.loadType = i.loadType || this._determineLoadType(), this.xhrType = i.xhrType, this.metadata = i.metadata || {}, this.error = null, this.xhr = null, this.children = [], this.type = t.TYPE.UNKNOWN, this.progressChunk = 0, this._dequeue = ho, this._onLoadBinding = null, this._elementTimer = 0, this._boundComplete = this.complete.bind(this), this._boundOnError = this._onError.bind(this), this._boundOnProgress = this._onProgress.bind(this), this._boundOnTimeout = this._onTimeout.bind(this), this._boundXhrOnError = this._xhrOnError.bind(this), this._boundXhrOnTimeout = this._xhrOnTimeout.bind(this), this._boundXhrOnAbort = this._xhrOnAbort.bind(this), this._boundXhrOnLoad = this._xhrOnLoad.bind(this), this.onStart = new Jn, this.onProgress = new Jn, this.onComplete = new Jn, this.onAfterMiddleware = new Jn
                            }
                            t.setExtensionLoadType = function (e, r) {
                                lo(t._loadTypeMap, e, r)
                            }, t.setExtensionXhrType = function (e, r) {
                                lo(t._xhrTypeMap, e, r)
                            };
                            var e = t.prototype;
                            return e.complete = function () {
                                this._clearEvents(), this._finish()
                            }, e.abort = function (e) {
                                if (!this.error) {
                                    if (this.error = new Error(e), this._clearEvents(), this.xhr) this.xhr.abort();
                                    else if (this.xdr) this.xdr.abort();
                                    else if (this.data)
                                        if (this.data.src) this.data.src = t.EMPTY_GIF;
                                        else
                                            for (; this.data.firstChild;) this.data.removeChild(this.data.firstChild);
                                    this._finish()
                                }
                            }, e.load = function (e) {
                                var r = this;
                                if (!this.isLoading)
                                    if (this.isComplete) e && setTimeout((function () {
                                        return e(r)
                                    }), 1);
                                    else switch (e && this.onComplete.once(e), this._setFlag(t.STATUS_FLAGS.LOADING, !0), this.onStart.dispatch(this), !1 !== this.crossOrigin && "string" == typeof this.crossOrigin || (this.crossOrigin = this._determineCrossOrigin(this.url)), this.loadType) {
                                        case t.LOAD_TYPE.IMAGE:
                                            this.type = t.TYPE.IMAGE, this._loadElement("image");
                                            break;
                                        case t.LOAD_TYPE.AUDIO:
                                            this.type = t.TYPE.AUDIO, this._loadSourceElement("audio");
                                            break;
                                        case t.LOAD_TYPE.VIDEO:
                                            this.type = t.TYPE.VIDEO, this._loadSourceElement("video");
                                            break;
                                        case t.LOAD_TYPE.XHR:
                                        default:
                                            so && this.crossOrigin ? this._loadXdr() : this._loadXhr()
                                    }
                            }, e._hasFlag = function (t) {
                                return 0 != (this._flags & t)
                            }, e._setFlag = function (t, e) {
                                this._flags = e ? this._flags | t : this._flags & ~t
                            }, e._clearEvents = function () {
                                clearTimeout(this._elementTimer), this.data && this.data.removeEventListener && (this.data.removeEventListener("error", this._boundOnError, !1), this.data.removeEventListener("load", this._boundComplete, !1), this.data.removeEventListener("progress", this._boundOnProgress, !1), this.data.removeEventListener("canplaythrough", this._boundComplete, !1)), this.xhr && (this.xhr.removeEventListener ? (this.xhr.removeEventListener("error", this._boundXhrOnError, !1), this.xhr.removeEventListener("timeout", this._boundXhrOnTimeout, !1), this.xhr.removeEventListener("abort", this._boundXhrOnAbort, !1), this.xhr.removeEventListener("progress", this._boundOnProgress, !1), this.xhr.removeEventListener("load", this._boundXhrOnLoad, !1)) : (this.xhr.onerror = null, this.xhr.ontimeout = null, this.xhr.onprogress = null, this.xhr.onload = null))
                            }, e._finish = function () {
                                if (this.isComplete) throw new Error("Complete called again for an already completed resource.");
                                this._setFlag(t.STATUS_FLAGS.COMPLETE, !0), this._setFlag(t.STATUS_FLAGS.LOADING, !1), this.onComplete.dispatch(this)
                            }, e._loadElement = function (t) {
                                this.metadata.loadElement ? this.data = this.metadata.loadElement : "image" === t && void 0 !== o.a.Image ? this.data = new g : this.data = v.createElement(t), this.crossOrigin && (this.data.crossOrigin = this.crossOrigin), this.metadata.skipSource || (this.data.src = this.url), this.data.addEventListener("error", this._boundOnError, !1), this.data.addEventListener("load", this._boundComplete, !1), this.data.addEventListener("progress", this._boundOnProgress, !1), this.timeout && (this._elementTimer = setTimeout(this._boundOnTimeout, this.timeout))
                            }, e._loadSourceElement = function (t) {
                                if (this.metadata.loadElement ? this.data = this.metadata.loadElement : "audio" === t && void 0 !== o.a.Audio ? this.data = new Audio : this.data = v.createElement(t), null !== this.data) {
                                    if (this.crossOrigin && (this.data.crossOrigin = this.crossOrigin), !this.metadata.skipSource)
                                        if (m.isCocoonJS) this.data.src = Array.isArray(this.url) ? this.url[0] : this.url;
                                        else if (Array.isArray(this.url))
                                        for (var e = this.metadata.mimeType, r = 0; r < this.url.length; ++r) this.data.appendChild(this._createSource(t, this.url[r], Array.isArray(e) ? e[r] : e));
                                    else {
                                        var i = this.metadata.mimeType;
                                        this.data.appendChild(this._createSource(t, this.url, Array.isArray(i) ? i[0] : i))
                                    }
                                    this.data.addEventListener("error", this._boundOnError, !1), this.data.addEventListener("load", this._boundComplete, !1), this.data.addEventListener("progress", this._boundOnProgress, !1), this.data.addEventListener("canplaythrough", this._boundComplete, !1), this.data.load(), this.timeout && (this._elementTimer = setTimeout(this._boundOnTimeout, this.timeout))
                                } else this.abort("Unsupported element: " + t)
                            }, e._loadXhr = function () {
                                "string" != typeof this.xhrType && (this.xhrType = this._determineXhrType());
                                var e = this.xhr = new n.a;
                                e.open("GET", this.url, !0), e.timeout = this.timeout, this.xhrType === t.XHR_RESPONSE_TYPE.JSON || this.xhrType === t.XHR_RESPONSE_TYPE.DOCUMENT ? e.responseType = t.XHR_RESPONSE_TYPE.TEXT : e.responseType = this.xhrType, e.addEventListener("error", this._boundXhrOnError, !1), e.addEventListener("timeout", this._boundXhrOnTimeout, !1), e.addEventListener("abort", this._boundXhrOnAbort, !1), e.addEventListener("progress", this._boundOnProgress, !1), e.addEventListener("load", this._boundXhrOnLoad, !1), e.send()
                            }, e._loadXdr = function () {
                                "string" != typeof this.xhrType && (this.xhrType = this._determineXhrType());
                                var t = this.xhr = new XDomainRequest;
                                t.timeout = this.timeout || 5e3, t.onerror = this._boundXhrOnError, t.ontimeout = this._boundXhrOnTimeout, t.onprogress = this._boundOnProgress, t.onload = this._boundXhrOnLoad, t.open("GET", this.url, !0), setTimeout((function () {
                                    return t.send()
                                }), 1)
                            }, e._createSource = function (t, e, r) {
                                r || (r = t + "/" + this._getExtension(e));
                                var i = v.createElement("source");
                                return i.src = e, i.type = r, i
                            }, e._onError = function (t) {
                                this.abort("Failed to load element using: " + t.target.nodeName)
                            }, e._onProgress = function (t) {
                                t && t.lengthComputable && this.onProgress.dispatch(this, t.loaded / t.total)
                            }, e._onTimeout = function () {
                                this.abort("Load timed out.")
                            }, e._xhrOnError = function () {
                                var t = this.xhr;
                                this.abort(co(t) + " Request failed. Status: " + t.status + ', text: "' + t.statusText + '"')
                            }, e._xhrOnTimeout = function () {
                                var t = this.xhr;
                                this.abort(co(t) + " Request timed out.")
                            }, e._xhrOnAbort = function () {
                                var t = this.xhr;
                                this.abort(co(t) + " Request was aborted by the user.")
                            }, e._xhrOnLoad = function () {
                                var e = this.xhr,
                                    r = "",
                                    i = void 0 === e.status ? 200 : e.status;
                                if ("" !== e.responseType && "text" !== e.responseType && void 0 !== e.responseType || (r = e.responseText), 0 === i && (r.length > 0 || e.responseType === t.XHR_RESPONSE_TYPE.BUFFER) ? i = 200 : 1223 === i && (i = 204), 2 === (i / 100 | 0)) {
                                    if (this.xhrType === t.XHR_RESPONSE_TYPE.TEXT) this.data = r, this.type = t.TYPE.TEXT;
                                    else if (this.xhrType === t.XHR_RESPONSE_TYPE.JSON) try {
                                        this.data = JSON.parse(r), this.type = t.TYPE.JSON
                                    } catch (t) {
                                        return void this.abort("Error trying to parse loaded json: " + t)
                                    } else if (this.xhrType === t.XHR_RESPONSE_TYPE.DOCUMENT) try {
                                        if (o.a.DOMParser) {
                                            var n = new h;
                                            this.data = n.parseFromString(r, "text/xml")
                                        } else {
                                            var s = v.createElement("div");
                                            s.innerHTML = r, this.data = s
                                        }
                                        this.type = t.TYPE.XML
                                    } catch (t) {
                                        return void this.abort("Error trying to parse loaded xml: " + t)
                                    } else this.data = e.response || r;
                                    this.complete()
                                } else this.abort("[" + e.status + "] " + e.statusText + ": " + e.responseURL)
                            }, e._determineCrossOrigin = function (t, e) {
                                if (0 === t.indexOf("data:")) return "";
                                if (o.a.origin !== o.a.location.origin) return "anonymous";
                                e = e || o.a.location, ao || (ao = v.createElement("a")), ao.href = t;
                                var r = !(t = $n(ao.href, {
                                        strictMode: !0
                                    })).port && "" === e.port || t.port === e.port,
                                    i = t.protocol ? t.protocol + ":" : "";
                                return t.host === e.hostname && r && i === e.protocol ? "" : "anonymous"
                            }, e._determineXhrType = function () {
                                return t._xhrTypeMap[this.extension] || t.XHR_RESPONSE_TYPE.TEXT
                            }, e._determineLoadType = function () {
                                return t._loadTypeMap[this.extension] || t.LOAD_TYPE.XHR
                            }, e._getExtension = function () {
                                var t = this.url,
                                    e = "";
                                if (this.isDataUrl) {
                                    var r = t.indexOf("/");
                                    e = t.substring(r + 1, t.indexOf(";", r))
                                } else {
                                    var i = t.indexOf("?"),
                                        n = t.indexOf("#"),
                                        o = Math.min(i > -1 ? i : t.length, n > -1 ? n : t.length);
                                    e = (t = t.substring(0, o)).substring(t.lastIndexOf(".") + 1)
                                }
                                return e.toLowerCase()
                            }, e._getMimeFromXhrType = function (e) {
                                switch (e) {
                                    case t.XHR_RESPONSE_TYPE.BUFFER:
                                        return "application/octet-binary";
                                    case t.XHR_RESPONSE_TYPE.BLOB:
                                        return "application/blob";
                                    case t.XHR_RESPONSE_TYPE.DOCUMENT:
                                        return "application/xml";
                                    case t.XHR_RESPONSE_TYPE.JSON:
                                        return "application/json";
                                    case t.XHR_RESPONSE_TYPE.DEFAULT:
                                    case t.XHR_RESPONSE_TYPE.TEXT:
                                    default:
                                        return "text/plain"
                                }
                            }, oo(t, [{
                                key: "isDataUrl",
                                get: function () {
                                    return this._hasFlag(t.STATUS_FLAGS.DATA_URL)
                                }
                            }, {
                                key: "isComplete",
                                get: function () {
                                    return this._hasFlag(t.STATUS_FLAGS.COMPLETE)
                                }
                            }, {
                                key: "isLoading",
                                get: function () {
                                    return this._hasFlag(t.STATUS_FLAGS.LOADING)
                                }
                            }]), t
                        }();

                        function lo(t, e, r) {
                            e && 0 === e.indexOf(".") && (e = e.substring(1)), e && (t[e] = r)
                        }

                        function co(t) {
                            return t.toString().replace("object ", "")
                        }
                        uo.STATUS_FLAGS = {
                            NONE: 0,
                            DATA_URL: 1,
                            COMPLETE: 2,
                            LOADING: 4
                        }, uo.TYPE = {
                            UNKNOWN: 0,
                            JSON: 1,
                            XML: 2,
                            IMAGE: 3,
                            AUDIO: 4,
                            VIDEO: 5,
                            TEXT: 6
                        }, uo.LOAD_TYPE = {
                            XHR: 1,
                            IMAGE: 2,
                            AUDIO: 3,
                            VIDEO: 4
                        }, uo.XHR_RESPONSE_TYPE = {
                            DEFAULT: "text",
                            BUFFER: "arraybuffer",
                            BLOB: "blob",
                            DOCUMENT: "document",
                            JSON: "json",
                            TEXT: "text"
                        }, uo._loadTypeMap = {
                            gif: uo.LOAD_TYPE.IMAGE,
                            png: uo.LOAD_TYPE.IMAGE,
                            bmp: uo.LOAD_TYPE.IMAGE,
                            jpg: uo.LOAD_TYPE.IMAGE,
                            jpeg: uo.LOAD_TYPE.IMAGE,
                            tif: uo.LOAD_TYPE.IMAGE,
                            tiff: uo.LOAD_TYPE.IMAGE,
                            webp: uo.LOAD_TYPE.IMAGE,
                            tga: uo.LOAD_TYPE.IMAGE,
                            svg: uo.LOAD_TYPE.IMAGE,
                            "svg+xml": uo.LOAD_TYPE.IMAGE,
                            mp3: uo.LOAD_TYPE.AUDIO,
                            ogg: uo.LOAD_TYPE.AUDIO,
                            wav: uo.LOAD_TYPE.AUDIO,
                            mp4: uo.LOAD_TYPE.VIDEO,
                            webm: uo.LOAD_TYPE.VIDEO
                        }, uo._xhrTypeMap = {
                            xhtml: uo.XHR_RESPONSE_TYPE.DOCUMENT,
                            html: uo.XHR_RESPONSE_TYPE.DOCUMENT,
                            htm: uo.XHR_RESPONSE_TYPE.DOCUMENT,
                            xml: uo.XHR_RESPONSE_TYPE.DOCUMENT,
                            tmx: uo.XHR_RESPONSE_TYPE.DOCUMENT,
                            svg: uo.XHR_RESPONSE_TYPE.DOCUMENT,
                            tsx: uo.XHR_RESPONSE_TYPE.DOCUMENT,
                            gif: uo.XHR_RESPONSE_TYPE.BLOB,
                            png: uo.XHR_RESPONSE_TYPE.BLOB,
                            bmp: uo.XHR_RESPONSE_TYPE.BLOB,
                            jpg: uo.XHR_RESPONSE_TYPE.BLOB,
                            jpeg: uo.XHR_RESPONSE_TYPE.BLOB,
                            tif: uo.XHR_RESPONSE_TYPE.BLOB,
                            tiff: uo.XHR_RESPONSE_TYPE.BLOB,
                            webp: uo.XHR_RESPONSE_TYPE.BLOB,
                            tga: uo.XHR_RESPONSE_TYPE.BLOB,
                            json: uo.XHR_RESPONSE_TYPE.JSON,
                            tjson: uo.XHR_RESPONSE_TYPE.JSON,
                            text: uo.XHR_RESPONSE_TYPE.TEXT,
                            txt: uo.XHR_RESPONSE_TYPE.TEXT,
                            ttf: uo.XHR_RESPONSE_TYPE.BUFFER,
                            otf: uo.XHR_RESPONSE_TYPE.BUFFER
                        }, uo.EMPTY_GIF = "";
                        var po = o.a.URL || o.a.webkitURL;
                        var fo = {
                                caching: function (t, e) {
                                    var r = this;
                                    io[t.url] ? (t.data = io[t.url], t.complete()) : t.onComplete.once((function () {
                                        return io[r.url] = r.data
                                    })), e()
                                },
                                parsing: function (t, e) {
                                    if (t.data) {
                                        if (t.xhr && t.xhrType === uo.XHR_RESPONSE_TYPE.BLOB)
                                            if (o.a.Blob && "string" != typeof t.data) {
                                                if (0 === t.data.type.indexOf("image")) {
                                                    var r = po.createObjectURL(t.data);
                                                    return t.blob = t.data, t.data = new g, t.data.src = r, t.type = uo.TYPE.IMAGE, void(t.data.onload = function () {
                                                        po.revokeObjectURL(r), t.data.onload = null, e()
                                                    })
                                                }
                                            } else {
                                                var i = t.xhr.getResponseHeader("content-type");
                                                if (i && 0 === i.indexOf("image")) return t.data = new g, t.data.src = "data:" + i + ";base64," + function (t) {
                                                    for (var e = "", r = 0; r < t.length;) {
                                                        for (var i = [0, 0, 0], n = [0, 0, 0, 0], o = 0; o < i.length; ++o) r < t.length ? i[o] = 255 & t.charCodeAt(r++) : i[o] = 0;
                                                        switch (n[0] = i[0] >> 2, n[1] = (3 & i[0]) << 4 | i[1] >> 4, n[2] = (15 & i[1]) << 2 | i[2] >> 6, n[3] = 63 & i[2], r - (t.length - 1)) {
                                                            case 2:
                                                                n[3] = 64, n[2] = 64;
                                                                break;
                                                            case 1:
                                                                n[3] = 64
                                                        }
                                                        for (var s = 0; s < n.length; ++s) e += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(n[s])
                                                    }
                                                    return e
                                                }(t.xhr.responseText), t.type = uo.TYPE.IMAGE, void(t.data.onload = function () {
                                                    t.data.onload = null, e()
                                                })
                                            } e()
                                    } else e()
                                }
                            },
                            mo = /(#[\w-]+)?$/,
                            go = function () {
                                function t(e, r) {
                                    var i = this;
                                    void 0 === e && (e = ""), void 0 === r && (r = 10), this.baseUrl = e, this.progress = 0, this.loading = !1, this.defaultQueryString = "", this._beforeMiddleware = [], this._afterMiddleware = [], this._resourcesParsing = [], this._boundLoadResource = function (t, e) {
                                        return i._loadResource(t, e)
                                    }, this._queue = ro(this._boundLoadResource, r), this._queue.pause(), this.resources = {}, this.onProgress = new Jn, this.onError = new Jn, this.onLoad = new Jn, this.onStart = new Jn, this.onComplete = new Jn;
                                    for (var n = 0; n < t._defaultBeforeMiddleware.length; ++n) this.pre(t._defaultBeforeMiddleware[n]);
                                    for (var o = 0; o < t._defaultAfterMiddleware.length; ++o) this.use(t._defaultAfterMiddleware[o])
                                }
                                var e = t.prototype;
                                return e.add = function (t, e, r, i) {
                                    if (Array.isArray(t)) {
                                        for (var n = 0; n < t.length; ++n) this.add(t[n]);
                                        return this
                                    }
                                    if ("object" === a(t) && (i = e || t.callback || t.onComplete, r = t, e = t.url, t = t.name || t.key || t.url), "string" != typeof e && (i = r, r = e, e = t), "string" != typeof e) throw new Error("No url passed to add resource to loader.");
                                    if ("function" == typeof r && (i = r, r = null), this.loading && (!r || !r.parentResource)) throw new Error("Cannot add resources while the loader is running.");
                                    if (this.resources[t]) throw new Error('Resource named "' + t + '" already exists.');
                                    if (e = this._prepareUrl(e), this.resources[t] = new uo(t, e, r), "function" == typeof i && this.resources[t].onAfterMiddleware.once(i), this.loading) {
                                        for (var o = r.parentResource, s = [], h = 0; h < o.children.length; ++h) o.children[h].isComplete || s.push(o.children[h]);
                                        var u = o.progressChunk * (s.length + 1) / (s.length + 2);
                                        o.children.push(this.resources[t]), o.progressChunk = u;
                                        for (var l = 0; l < s.length; ++l) s[l].progressChunk = u;
                                        this.resources[t].progressChunk = u
                                    }
                                    return this._queue.push(this.resources[t]), this
                                }, e.pre = function (t) {
                                    return this._beforeMiddleware.push(t), this
                                }, e.use = function (t) {
                                    return this._afterMiddleware.push(t), this
                                }, e.reset = function () {
                                    for (var t in this.progress = 0, this.loading = !1, this._queue.kill(), this._queue.pause(), this.resources) {
                                        var e = this.resources[t];
                                        e._onLoadBinding && e._onLoadBinding.detach(), e.isLoading && e.abort()
                                    }
                                    return this.resources = {}, this
                                }, e.load = function (t) {
                                    if ("function" == typeof t && this.onComplete.once(t), this.loading) return this;
                                    if (this._queue.idle()) this._onStart(), this._onComplete();
                                    else {
                                        for (var e = 100 / this._queue._tasks.length, r = 0; r < this._queue._tasks.length; ++r) this._queue._tasks[r].data.progressChunk = e;
                                        this._onStart(), this._queue.resume()
                                    }
                                    return this
                                }, e._prepareUrl = function (t) {
                                    var e, r = $n(t, {
                                        strictMode: !0
                                    });
                                    if (e = r.protocol || !r.path || 0 === t.indexOf("//") ? t : this.baseUrl.length && this.baseUrl.lastIndexOf("/") !== this.baseUrl.length - 1 && "/" !== t.charAt(0) ? this.baseUrl + "/" + t : this.baseUrl + t, this.defaultQueryString) {
                                        var i = mo.exec(e)[0]; - 1 !== (e = e.substr(0, e.length - i.length)).indexOf("?") ? e += "&" + this.defaultQueryString : e += "?" + this.defaultQueryString, e += i
                                    }
                                    return e
                                }, e._loadResource = function (t, e) {
                                    var r = this;
                                    t._dequeue = e, to(this._beforeMiddleware, (function (e, i) {
                                        e.call(r, t, (function () {
                                            i(t.isComplete ? {} : null)
                                        }))
                                    }), (function () {
                                        t.isComplete ? r._onLoad(t) : (t._onLoadBinding = t.onComplete.once(r._onLoad, r), t.load())
                                    }), !0)
                                }, e._onStart = function () {
                                    this.progress = 0, this.loading = !0, this.onStart.dispatch(this)
                                }, e._onComplete = function () {
                                    this.progress = 100, this.loading = !1, this.onComplete.dispatch(this, this.resources)
                                }, e._onLoad = function (t) {
                                    var e = this;
                                    t._onLoadBinding = null, this._resourcesParsing.push(t), t._dequeue(), to(this._afterMiddleware, (function (r, i) {
                                        r.call(e, t, i)
                                    }), (function () {
                                        t.onAfterMiddleware.dispatch(t), e.progress = Math.min(100, e.progress + t.progressChunk), e.onProgress.dispatch(e, t), t.error ? e.onError.dispatch(t.error, e, t) : e.onLoad.dispatch(e, t), e._resourcesParsing.splice(e._resourcesParsing.indexOf(t), 1), e._queue.idle() && 0 === e._resourcesParsing.length && e._onComplete()
                                    }), !0)
                                }, oo(t, [{
                                    key: "concurrency",
                                    get: function () {
                                        return this._queue.concurrency
                                    },
                                    set: function (t) {
                                        this._queue.concurrency = t
                                    }
                                }]), t
                            }();
                        go._defaultBeforeMiddleware = [], go._defaultAfterMiddleware = [], go.pre = function (t) {
                            return go._defaultBeforeMiddleware.push(t), go
                        }, go.use = function (t) {
                            return go._defaultAfterMiddleware.push(t), go
                        };
                        /*!
                         * @pixi/loaders - v5.2.1
                         * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                         *
                         * @pixi/loaders is licensed under the MIT License.
                         * http://www.opensource.org/licenses/mit-license
                         */
                        var vo = function () {};
                        vo.use = function (t, e) {
                            t.data && t.type === uo.TYPE.IMAGE && (t.texture = ii.fromLoader(t.data, t.url, t.name)), e()
                        };
                        var yo = function (t) {
                            function e(r, i) {
                                var n = this;
                                t.call(this, r, i), W.call(this);
                                for (var o = 0; o < e._plugins.length; ++o) {
                                    var s = e._plugins[o],
                                        a = s.pre,
                                        h = s.use;
                                    a && this.pre(a), h && this.use(h)
                                }
                                this.onStart.add((function (t) {
                                    return n.emit("start", t)
                                })), this.onProgress.add((function (t, e) {
                                    return n.emit("progress", t, e)
                                })), this.onError.add((function (t, e, r) {
                                    return n.emit("error", t, e, r)
                                })), this.onLoad.add((function (t, e) {
                                    return n.emit("load", t, e)
                                })), this.onComplete.add((function (t, e) {
                                    return n.emit("complete", t, e)
                                })), this._protected = !1
                            }
                            t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
                            var r = {
                                shared: {
                                    configurable: !0
                                }
                            };
                            return e.prototype.destroy = function () {
                                this._protected || (this.removeAllListeners(), this.reset())
                            }, r.shared.get = function () {
                                var t = e._shared;
                                return t || ((t = new e)._protected = !0, e._shared = t), t
                            }, Object.defineProperties(e, r), e
                        }(go);
                        Object.assign(yo.prototype, W.prototype), yo._plugins = [], yo.registerPlugin = function (t) {
                            return yo._plugins.push(t), t.add && t.add(), yo
                        }, yo.registerPlugin({
                            use: fo.parsing
                        }), yo.registerPlugin(vo);
                        var _o = function () {};
                        _o.init = function (t) {
                            t = Object.assign({
                                sharedLoader: !1
                            }, t), this.loader = t.sharedLoader ? yo.shared : new yo
                        }, _o.destroy = function () {
                            this.loader && (this.loader.destroy(), this.loader = null)
                        };
                        var xo = uo,
                            bo = function (t) {
                                function r(r, i, n, o) {
                                    void 0 === r && (r = 1500), void 0 === n && (n = 16384), void 0 === o && (o = !1), t.call(this);
                                    n > 16384 && (n = 16384), this._properties = [!1, !0, !1, !1, !1], this._maxSize = r, this._batchSize = n, this._buffers = null, this._bufferUpdateIDs = [], this._updateID = 0, this.interactiveChildren = !1, this.blendMode = e.BLEND_MODES.NORMAL, this.autoResize = o, this.roundPixels = !0, this.baseTexture = null, this.setProperties(i), this._tint = 0, this.tintRgb = new Float32Array(4), this.tint = 16777215
                                }
                                t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r;
                                var i = {
                                    tint: {
                                        configurable: !0
                                    }
                                };
                                return r.prototype.setProperties = function (t) {
                                    t && (this._properties[0] = "vertices" in t || "scale" in t ? !!t.vertices || !!t.scale : this._properties[0], this._properties[1] = "position" in t ? !!t.position : this._properties[1], this._properties[2] = "rotation" in t ? !!t.rotation : this._properties[2], this._properties[3] = "uvs" in t ? !!t.uvs : this._properties[3], this._properties[4] = "tint" in t || "alpha" in t ? !!t.tint || !!t.alpha : this._properties[4])
                                }, r.prototype.updateTransform = function () {
                                    this.displayObjectUpdateTransform()
                                }, i.tint.get = function () {
                                    return this._tint
                                }, i.tint.set = function (t) {
                                    this._tint = t, me(t, this.tintRgb)
                                }, r.prototype.render = function (t) {
                                    var e = this;
                                    this.visible && !(this.worldAlpha <= 0) && this.children.length && this.renderable && (this.baseTexture || (this.baseTexture = this.children[0]._texture.baseTexture, this.baseTexture.valid || this.baseTexture.once("update", (function () {
                                        return e.onChildrenChange(0)
                                    }))), t.batch.setObjectRenderer(t.plugins.particle), t.plugins.particle.render(this))
                                }, r.prototype.onChildrenChange = function (t) {
                                    for (var e = Math.floor(t / this._batchSize); this._bufferUpdateIDs.length < e;) this._bufferUpdateIDs.push(0);
                                    this._bufferUpdateIDs[e] = ++this._updateID
                                }, r.prototype.dispose = function () {
                                    if (this._buffers) {
                                        for (var t = 0; t < this._buffers.length; ++t) this._buffers[t].destroy();
                                        this._buffers = null
                                    }
                                }, r.prototype.destroy = function (e) {
                                    t.prototype.destroy.call(this, e), this.dispose(), this._properties = null, this._buffers = null, this._bufferUpdateIDs = null
                                }, Object.defineProperties(r.prototype, i), r
                            }(mr),
                            Eo = function (t, r, i) {
                                this.geometry = new mi, this.indexBuffer = null, this.size = i, this.dynamicProperties = [], this.staticProperties = [];
                                for (var n = 0; n < t.length; ++n) {
                                    var o = t[n];
                                    o = {
                                        attributeName: o.attributeName,
                                        size: o.size,
                                        uploadFunction: o.uploadFunction,
                                        type: o.type || e.TYPES.FLOAT,
                                        offset: o.offset
                                    }, r[n] ? this.dynamicProperties.push(o) : this.staticProperties.push(o)
                                }
                                this.staticStride = 0, this.staticBuffer = null, this.staticData = null, this.staticDataUint32 = null, this.dynamicStride = 0, this.dynamicBuffer = null, this.dynamicData = null, this.dynamicDataUint32 = null, this._updateID = 0, this.initBuffers()
                            };
                        /*!
                         * @pixi/particles - v5.2.1
                         * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                         *
                         * @pixi/particles is licensed under the MIT License.
                         * http://www.opensource.org/licenses/mit-license
                         */
                        Eo.prototype.initBuffers = function () {
                            var t = this.geometry,
                                r = 0;
                            this.indexBuffer = new ui(Te(this.size), !0, !0), t.addIndex(this.indexBuffer), this.dynamicStride = 0;
                            for (var i = 0; i < this.dynamicProperties.length; ++i) {
                                var n = this.dynamicProperties[i];
                                n.offset = r, r += n.size, this.dynamicStride += n.size
                            }
                            var o = new ArrayBuffer(this.size * this.dynamicStride * 4 * 4);
                            this.dynamicData = new Float32Array(o), this.dynamicDataUint32 = new Uint32Array(o), this.dynamicBuffer = new ui(this.dynamicData, !1, !1);
                            var s = 0;
                            this.staticStride = 0;
                            for (var a = 0; a < this.staticProperties.length; ++a) {
                                var h = this.staticProperties[a];
                                h.offset = s, s += h.size, this.staticStride += h.size
                            }
                            var u = new ArrayBuffer(this.size * this.staticStride * 4 * 4);
                            this.staticData = new Float32Array(u), this.staticDataUint32 = new Uint32Array(u), this.staticBuffer = new ui(this.staticData, !0, !1);
                            for (var l = 0; l < this.dynamicProperties.length; ++l) {
                                var c = this.dynamicProperties[l];
                                t.addAttribute(c.attributeName, this.dynamicBuffer, 0, c.type === e.TYPES.UNSIGNED_BYTE, c.type, 4 * this.dynamicStride, 4 * c.offset)
                            }
                            for (var d = 0; d < this.staticProperties.length; ++d) {
                                var p = this.staticProperties[d];
                                t.addAttribute(p.attributeName, this.staticBuffer, 0, p.type === e.TYPES.UNSIGNED_BYTE, p.type, 4 * this.staticStride, 4 * p.offset)
                            }
                        }, Eo.prototype.uploadDynamic = function (t, r, i) {
                            for (var n = 0; n < this.dynamicProperties.length; n++) {
                                var o = this.dynamicProperties[n];
                                o.uploadFunction(t, r, i, o.type === e.TYPES.UNSIGNED_BYTE ? this.dynamicDataUint32 : this.dynamicData, this.dynamicStride, o.offset)
                            }
                            this.dynamicBuffer._updateID++
                        }, Eo.prototype.uploadStatic = function (t, r, i) {
                            for (var n = 0; n < this.staticProperties.length; n++) {
                                var o = this.staticProperties[n];
                                o.uploadFunction(t, r, i, o.type === e.TYPES.UNSIGNED_BYTE ? this.staticDataUint32 : this.staticData, this.staticStride, o.offset)
                            }
                            this.staticBuffer._updateID++
                        }, Eo.prototype.destroy = function () {
                            this.indexBuffer = null, this.dynamicProperties = null, this.dynamicBuffer = null, this.dynamicData = null, this.dynamicDataUint32 = null, this.staticProperties = null, this.staticBuffer = null, this.staticData = null, this.staticDataUint32 = null, this.geometry.destroy()
                        };
                        var To = function (t) {
                                function r(r) {
                                    t.call(this, r), this.shader = null, this.properties = null, this.tempMatrix = new $e, this.properties = [{
                                        attributeName: "aVertexPosition",
                                        size: 2,
                                        uploadFunction: this.uploadVertices,
                                        offset: 0
                                    }, {
                                        attributeName: "aPositionCoord",
                                        size: 2,
                                        uploadFunction: this.uploadPosition,
                                        offset: 0
                                    }, {
                                        attributeName: "aRotation",
                                        size: 1,
                                        uploadFunction: this.uploadRotation,
                                        offset: 0
                                    }, {
                                        attributeName: "aTextureCoord",
                                        size: 2,
                                        uploadFunction: this.uploadUvs,
                                        offset: 0
                                    }, {
                                        attributeName: "aColor",
                                        size: 1,
                                        type: e.TYPES.UNSIGNED_BYTE,
                                        uploadFunction: this.uploadTint,
                                        offset: 0
                                    }], this.shader = en.from("attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\n\nattribute vec2 aPositionCoord;\nattribute float aRotation;\n\nuniform mat3 translationMatrix;\nuniform vec4 uColor;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nvoid main(void){\n    float x = (aVertexPosition.x) * cos(aRotation) - (aVertexPosition.y) * sin(aRotation);\n    float y = (aVertexPosition.x) * sin(aRotation) + (aVertexPosition.y) * cos(aRotation);\n\n    vec2 v = vec2(x, y);\n    v = v + aPositionCoord;\n\n    gl_Position = vec4((translationMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);\n\n    vTextureCoord = aTextureCoord;\n    vColor = aColor * uColor;\n}\n", "varying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform sampler2D uSampler;\n\nvoid main(void){\n    vec4 color = texture2D(uSampler, vTextureCoord) * vColor;\n    gl_FragColor = color;\n}", {}), this.state = nn.for2d()
                                }
                                return t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r, r.prototype.render = function (t) {
                                    var e = t.children,
                                        r = t._maxSize,
                                        i = t._batchSize,
                                        n = this.renderer,
                                        o = e.length;
                                    if (0 !== o) {
                                        o > r && !t.autoResize && (o = r);
                                        var s = t._buffers;
                                        s || (s = t._buffers = this.generateBuffers(t));
                                        var a = e[0]._texture.baseTexture;
                                        this.state.blendMode = _e(t.blendMode, a.alphaMode), n.state.set(this.state);
                                        var h = n.gl,
                                            u = t.worldTransform.copyTo(this.tempMatrix);
                                        u.prepend(n.globalUniforms.uniforms.projectionMatrix), this.shader.uniforms.translationMatrix = u.toArray(!0), this.shader.uniforms.uColor = xe(t.tintRgb, t.worldAlpha, this.shader.uniforms.uColor, a.alphaMode), this.shader.uniforms.uSampler = a, this.renderer.shader.bind(this.shader);
                                        for (var l = !1, c = 0, d = 0; c < o; c += i, d += 1) {
                                            var p = o - c;
                                            p > i && (p = i), d >= s.length && s.push(this._generateOneMoreBuffer(t));
                                            var f = s[d];
                                            f.uploadDynamic(e, c, p);
                                            var m = t._bufferUpdateIDs[d] || 0;
                                            (l = l || f._updateID < m) && (f._updateID = t._updateID, f.uploadStatic(e, c, p)), n.geometry.bind(f.geometry), h.drawElements(h.TRIANGLES, 6 * p, h.UNSIGNED_SHORT, 0)
                                        }
                                    }
                                }, r.prototype.generateBuffers = function (t) {
                                    for (var e = [], r = t._maxSize, i = t._batchSize, n = t._properties, o = 0; o < r; o += i) e.push(new Eo(this.properties, n, i));
                                    return e
                                }, r.prototype._generateOneMoreBuffer = function (t) {
                                    var e = t._batchSize,
                                        r = t._properties;
                                    return new Eo(this.properties, r, e)
                                }, r.prototype.uploadVertices = function (t, e, r, i, n, o) {
                                    for (var s = 0, a = 0, h = 0, u = 0, l = 0; l < r; ++l) {
                                        var c = t[e + l],
                                            d = c._texture,
                                            p = c.scale.x,
                                            f = c.scale.y,
                                            m = d.trim,
                                            g = d.orig;
                                        m ? (s = (a = m.x - c.anchor.x * g.width) + m.width, h = (u = m.y - c.anchor.y * g.height) + m.height) : (s = g.width * (1 - c.anchor.x), a = g.width * -c.anchor.x, h = g.height * (1 - c.anchor.y), u = g.height * -c.anchor.y), i[o] = a * p, i[o + 1] = u * f, i[o + n] = s * p, i[o + n + 1] = u * f, i[o + 2 * n] = s * p, i[o + 2 * n + 1] = h * f, i[o + 3 * n] = a * p, i[o + 3 * n + 1] = h * f, o += 4 * n
                                    }
                                }, r.prototype.uploadPosition = function (t, e, r, i, n, o) {
                                    for (var s = 0; s < r; s++) {
                                        var a = t[e + s].position;
                                        i[o] = a.x, i[o + 1] = a.y, i[o + n] = a.x, i[o + n + 1] = a.y, i[o + 2 * n] = a.x, i[o + 2 * n + 1] = a.y, i[o + 3 * n] = a.x, i[o + 3 * n + 1] = a.y, o += 4 * n
                                    }
                                }, r.prototype.uploadRotation = function (t, e, r, i, n, o) {
                                    for (var s = 0; s < r; s++) {
                                        var a = t[e + s].rotation;
                                        i[o] = a, i[o + n] = a, i[o + 2 * n] = a, i[o + 3 * n] = a, o += 4 * n
                                    }
                                }, r.prototype.uploadUvs = function (t, e, r, i, n, o) {
                                    for (var s = 0; s < r; ++s) {
                                        var a = t[e + s]._texture._uvs;
                                        a ? (i[o] = a.x0, i[o + 1] = a.y0, i[o + n] = a.x1, i[o + n + 1] = a.y1, i[o + 2 * n] = a.x2, i[o + 2 * n + 1] = a.y2, i[o + 3 * n] = a.x3, i[o + 3 * n + 1] = a.y3, o += 4 * n) : (i[o] = 0, i[o + 1] = 0, i[o + n] = 0, i[o + n + 1] = 0, i[o + 2 * n] = 0, i[o + 2 * n + 1] = 0, i[o + 3 * n] = 0, i[o + 3 * n + 1] = 0, o += 4 * n)
                                    }
                                }, r.prototype.uploadTint = function (t, e, r, i, n, o) {
                                    for (var s = 0; s < r; ++s) {
                                        var a = t[e + s],
                                            h = a._texture.baseTexture.alphaMode > 0,
                                            u = a.alpha,
                                            l = u < 1 && h ? be(a._tintRGB, u) : a._tintRGB + (255 * u << 24);
                                        i[o] = l, i[o + n] = l, i[o + 2 * n] = l, i[o + 3 * n] = l, o += 4 * n
                                    }
                                }, r.prototype.destroy = function () {
                                    t.prototype.destroy.call(this), this.shader && (this.shader.destroy(), this.shader = null), this.tempMatrix = null
                                }, r
                            }(Ei),
                            wo = {
                                adaptive: !0,
                                maxLength: 10,
                                minSegments: 8,
                                maxSegments: 2048,
                                _segmentsCount: function (t, e) {
                                    if (void 0 === e && (e = 20), !this.adaptive || !t || Number.isNaN(t)) return e;
                                    var r = Math.ceil(t / this.maxLength);
                                    return r < this.minSegments ? r = this.minSegments : r > this.maxSegments && (r = this.maxSegments), r
                                }
                            },
                            So = function () {
                                this.reset()
                            };
                        So.prototype.clone = function () {
                            var t = new So;
                            return t.color = this.color, t.alpha = this.alpha, t.texture = this.texture, t.matrix = this.matrix, t.visible = this.visible, t
                        }, So.prototype.reset = function () {
                            this.color = 16777215, this.alpha = 1, this.texture = ii.WHITE, this.matrix = null, this.visible = !1
                        }, So.prototype.destroy = function () {
                            this.texture = null, this.matrix = null
                        };
                        var Io = {
                                build: function (t) {
                                    t.points = t.shape.points.slice()
                                },
                                triangulate: function (t, e) {
                                    var r = t.points,
                                        i = t.holes,
                                        n = e.points,
                                        o = e.indices;
                                    if (r.length >= 6) {
                                        for (var s = [], a = 0; a < i.length; a++) {
                                            var h = i[a];
                                            s.push(r.length / 2), r = r.concat(h.points)
                                        }
                                        var u = q(r, s, 2);
                                        if (!u) return;
                                        for (var l = n.length / 2, c = 0; c < u.length; c += 3) o.push(u[c] + l), o.push(u[c + 1] + l), o.push(u[c + 2] + l);
                                        for (var d = 0; d < r.length; d++) n.push(r[d])
                                    }
                                }
                            },
                            Po = {
                                build: function (t) {
                                    var r, i, n = t.shape,
                                        o = t.points,
                                        s = n.x,
                                        a = n.y;
                                    if (o.length = 0, t.type === e.SHAPES.CIRC ? (r = n.radius, i = n.radius) : (r = n.width, i = n.height), 0 !== r && 0 !== i) {
                                        var h = Math.floor(30 * Math.sqrt(n.radius)) || Math.floor(15 * Math.sqrt(n.width + n.height));
                                        h /= 2.3;
                                        for (var u = 2 * Math.PI / h, l = 0; l < h - .5; l++) o.push(s + Math.sin(-u * l) * r, a + Math.cos(-u * l) * i);
                                        o.push(o[0], o[1])
                                    }
                                },
                                triangulate: function (t, e) {
                                    var r = t.points,
                                        i = e.points,
                                        n = e.indices,
                                        o = i.length / 2,
                                        s = o;
                                    i.push(t.shape.x, t.shape.y);
                                    for (var a = 0; a < r.length; a += 2) i.push(r[a], r[a + 1]), n.push(o++, s, o)
                                }
                            },
                            Ao = {
                                build: function (t) {
                                    var e = t.shape,
                                        r = e.x,
                                        i = e.y,
                                        n = e.width,
                                        o = e.height,
                                        s = t.points;
                                    s.length = 0, s.push(r, i, r + n, i, r + n, i + o, r, i + o)
                                },
                                triangulate: function (t, e) {
                                    var r = t.points,
                                        i = e.points,
                                        n = i.length / 2;
                                    i.push(r[0], r[1], r[2], r[3], r[6], r[7], r[4], r[5]), e.indices.push(n, n + 1, n + 2, n + 1, n + 2, n + 3)
                                }
                            },
                            Oo = {
                                build: function (t) {
                                    var e = t.shape,
                                        r = t.points,
                                        i = e.x,
                                        n = e.y,
                                        o = e.width,
                                        s = e.height,
                                        a = e.radius;
                                    r.length = 0, Co(i, n + a, i, n, i + a, n, r), Co(i + o - a, n, i + o, n, i + o, n + a, r), Co(i + o, n + s - a, i + o, n + s, i + o - a, n + s, r), Co(i + a, n + s, i, n + s, i, n + s - a, r)
                                },
                                triangulate: function (t, e) {
                                    for (var r = t.points, i = e.points, n = e.indices, o = i.length / 2, s = q(r, null, 2), a = 0, h = s.length; a < h; a += 3) n.push(s[a] + o), n.push(s[a + 1] + o), n.push(s[a + 2] + o);
                                    for (var u = 0, l = r.length; u < l; u++) i.push(r[u], r[++u])
                                }
                            };

                        function Do(t, e, r) {
                            return t + (e - t) * r
                        }

                        function Co(t, e, r, i, n, o, s) {
                            void 0 === s && (s = []);
                            for (var a = s, h = 0, u = 0, l = 0, c = 0, d = 0, p = 0, f = 0, m = 0; f <= 20; ++f) h = Do(t, r, m = f / 20), u = Do(e, i, m), l = Do(r, n, m), c = Do(i, o, m), d = Do(h, l, m), p = Do(u, c, m), a.push(d, p);
                            return a
                        }

                        function Mo(t, r) {
                            t.lineStyle.native ? function (t, r) {
                                var i = 0,
                                    n = t.shape,
                                    o = t.points || n.points,
                                    s = n.type !== e.SHAPES.POLY || n.closeStroke;
                                if (0 === o.length) return;
                                var a = r.points,
                                    h = r.indices,
                                    u = o.length / 2,
                                    l = a.length / 2,
                                    c = l;
                                for (a.push(o[0], o[1]), i = 1; i < u; i++) a.push(o[2 * i], o[2 * i + 1]), h.push(c, c + 1), c++;
                                s && h.push(c, l)
                            }(t, r) : function (t, r) {
                                var i = t.shape,
                                    n = t.points || i.points.slice(),
                                    o = r.closePointEps;
                                if (0 === n.length) return;
                                var s = t.lineStyle,
                                    a = new Ve(n[0], n[1]),
                                    h = new Ve(n[n.length - 2], n[n.length - 1]),
                                    u = i.type !== e.SHAPES.POLY || i.closeStroke,
                                    l = Math.abs(a.x - h.x) < o && Math.abs(a.y - h.y) < o;
                                if (u) {
                                    n = n.slice(), l && (n.pop(), n.pop(), h.set(n[n.length - 2], n[n.length - 1]));
                                    var c = h.x + .5 * (a.x - h.x),
                                        d = h.y + .5 * (a.y - h.y);
                                    n.unshift(c, d), n.push(c, d)
                                }
                                var p = r.points,
                                    f = n.length / 2,
                                    m = n.length,
                                    g = p.length / 2,
                                    v = s.width / 2,
                                    y = n[0],
                                    _ = n[1],
                                    x = n[2],
                                    b = n[3],
                                    E = 0,
                                    T = 0,
                                    w = -(_ - b),
                                    S = y - x,
                                    I = 0,
                                    P = 0,
                                    A = 0,
                                    O = 0,
                                    D = Math.sqrt(w * w + S * S);
                                w /= D, S /= D, w *= v, S *= v;
                                var C = s.alignment,
                                    M = 2 * (1 - C),
                                    R = 2 * C;
                                p.push(y - w * M, _ - S * M), p.push(y + w * R, _ + S * R);
                                for (var N = 1; N < f - 1; ++N) {
                                    y = n[2 * (N - 1)], _ = n[2 * (N - 1) + 1], x = n[2 * N], b = n[2 * N + 1], E = n[2 * (N + 1)], T = n[2 * (N + 1) + 1], w = -(_ - b), S = y - x, D = Math.sqrt(w * w + S * S), w /= D, S /= D, w *= v, S *= v, I = -(b - T), P = x - E, D = Math.sqrt(I * I + P * P), I /= D, P /= D;
                                    var L = -S + _ - (-S + b),
                                        F = -w + x - (-w + y),
                                        B = (-w + y) * (-S + b) - (-w + x) * (-S + _),
                                        U = -(P *= v) + T - (-P + b),
                                        k = -(I *= v) + x - (-I + E),
                                        X = (-I + E) * (-P + b) - (-I + x) * (-P + T),
                                        j = L * k - U * F;
                                    if (Math.abs(j) < .1) j += 10.1, p.push(x - w * M, b - S * M), p.push(x + w * R, b + S * R);
                                    else {
                                        var H = (F * X - k * B) / j,
                                            G = (U * B - L * X) / j;
                                        (H - x) * (H - x) + (G - b) * (G - b) > 196 * v * v ? (A = w - I, O = S - P, D = Math.sqrt(A * A + O * O), A /= D, O /= D, A *= v, O *= v, p.push(x - A * M, b - O * M), p.push(x + A * R, b + O * R), p.push(x - A * R * M, b - O * M), m++) : (p.push(x + (H - x) * M, b + (G - b) * M), p.push(x - (H - x) * R, b - (G - b) * R))
                                    }
                                }
                                y = n[2 * (f - 2)], _ = n[2 * (f - 2) + 1], x = n[2 * (f - 1)], b = n[2 * (f - 1) + 1], w = -(_ - b), S = y - x, D = Math.sqrt(w * w + S * S), w /= D, S /= D, w *= v, S *= v, p.push(x - w * M, b - S * M), p.push(x + w * R, b + S * R);
                                for (var Y = r.indices, z = 0; z < m - 2; ++z) Y.push(g, g + 1, g + 2), g++
                            }(t, r)
                        }
                        var Ro = function (t) {
                                function e(e, r, i, n, o, s) {
                                    o = o || n / 2;
                                    for (var a = -1 * Math.PI / 2 + s, h = 2 * i, u = qe / h, l = [], c = 0; c < h; c++) {
                                        var d = c % 2 ? o : n,
                                            p = c * u + a;
                                        l.push(e + d * Math.cos(p), r + d * Math.sin(p))
                                    }
                                    t.call(this, l)
                                }
                                return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e
                            }(lr),
                            No = function () {};
                        No.curveTo = function (t, e, r, i, n, o) {
                            var s = o[o.length - 2],
                                a = o[o.length - 1] - e,
                                h = s - t,
                                u = i - e,
                                l = r - t,
                                c = Math.abs(a * l - h * u);
                            if (c < 1e-8 || 0 === n) return o[o.length - 2] === t && o[o.length - 1] === e || o.push(t, e), null;
                            var d = a * a + h * h,
                                p = u * u + l * l,
                                f = a * u + h * l,
                                m = n * Math.sqrt(d) / c,
                                g = n * Math.sqrt(p) / c,
                                v = m * f / d,
                                y = g * f / p,
                                _ = m * l + g * h,
                                x = m * u + g * a,
                                b = h * (g + v),
                                E = a * (g + v),
                                T = l * (m + y),
                                w = u * (m + y);
                            return {
                                cx: _ + t,
                                cy: x + e,
                                radius: n,
                                startAngle: Math.atan2(E - x, b - _),
                                endAngle: Math.atan2(w - x, T - _),
                                anticlockwise: h * u > l * a
                            }
                        }, No.arc = function (t, e, r, i, n, o, s, a, h) {
                            for (var u = s - o, l = wo._segmentsCount(Math.abs(u) * n, 40 * Math.ceil(Math.abs(u) / qe)), c = u / (2 * l), d = 2 * c, p = Math.cos(c), f = Math.sin(c), m = l - 1, g = m % 1 / m, v = 0; v <= m; ++v) {
                                var y = c + o + d * (v + g * v),
                                    _ = Math.cos(y),
                                    x = -Math.sin(y);
                                h.push((p * _ + f * x) * n + r, (p * -x + f * _) * n + i)
                            }
                        };
                        var Lo = function () {};
                        Lo.curveLength = function (t, e, r, i, n, o, s, a) {
                            for (var h = 0, u = 0, l = 0, c = 0, d = 0, p = 0, f = 0, m = 0, g = 0, v = 0, y = 0, _ = t, x = e, b = 1; b <= 10; ++b) v = _ - (m = (f = (p = (d = 1 - (u = b / 10)) * d) * d) * t + 3 * p * u * r + 3 * d * (l = u * u) * n + (c = l * u) * s), y = x - (g = f * e + 3 * p * u * i + 3 * d * l * o + c * a), _ = m, x = g, h += Math.sqrt(v * v + y * y);
                            return h
                        }, Lo.curveTo = function (t, e, r, i, n, o, s) {
                            var a = s[s.length - 2],
                                h = s[s.length - 1];
                            s.length -= 2;
                            var u = wo._segmentsCount(Lo.curveLength(a, h, t, e, r, i, n, o)),
                                l = 0,
                                c = 0,
                                d = 0,
                                p = 0,
                                f = 0;
                            s.push(a, h);
                            for (var m = 1, g = 0; m <= u; ++m) d = (c = (l = 1 - (g = m / u)) * l) * l, f = (p = g * g) * g, s.push(d * a + 3 * c * g * t + 3 * l * p * r + f * n, d * h + 3 * c * g * e + 3 * l * p * i + f * o)
                        };
                        var Fo = function () {};
                        Fo.curveLength = function (t, e, r, i, n, o) {
                            var s = t - 2 * r + n,
                                a = e - 2 * i + o,
                                h = 2 * r - 2 * t,
                                u = 2 * i - 2 * e,
                                l = 4 * (s * s + a * a),
                                c = 4 * (s * h + a * u),
                                d = h * h + u * u,
                                p = 2 * Math.sqrt(l + c + d),
                                f = Math.sqrt(l),
                                m = 2 * l * f,
                                g = 2 * Math.sqrt(d),
                                v = c / f;
                            return (m * p + f * c * (p - g) + (4 * d * l - c * c) * Math.log((2 * f + v + p) / (v + g))) / (4 * m)
                        }, Fo.curveTo = function (t, e, r, i, n) {
                            for (var o = n[n.length - 2], s = n[n.length - 1], a = wo._segmentsCount(Fo.curveLength(o, s, t, e, r, i)), h = 0, u = 0, l = 1; l <= a; ++l) {
                                var c = l / a;
                                h = o + (t - o) * c, u = s + (e - s) * c, n.push(h + (t + (r - t) * c - h) * c, u + (e + (i - e) * c - u) * c)
                            }
                        };
                        var Bo = function () {
                            this.reset()
                        };
                        Bo.prototype.begin = function (t, e, r) {
                            this.reset(), this.style = t, this.start = e, this.attribStart = r
                        }, Bo.prototype.end = function (t, e) {
                            this.attribSize = e - this.attribStart, this.size = t - this.start
                        }, Bo.prototype.reset = function () {
                            this.style = null, this.size = 0, this.start = 0, this.attribStart = 0, this.attribSize = 0
                        };
                        var Uo = {};
                        Uo[e.SHAPES.POLY] = Io, Uo[e.SHAPES.CIRC] = Po, Uo[e.SHAPES.ELIP] = Po, Uo[e.SHAPES.RECT] = Ao, Uo[e.SHAPES.RREC] = Oo;
                        var ko = [],
                            Xo = [],
                            jo = {
                                buildPoly: Io,
                                buildCircle: Po,
                                buildRectangle: Ao,
                                buildRoundedRectangle: Oo,
                                FILL_COMMANDS: Uo,
                                BATCH_POOL: ko,
                                DRAW_CALL_POOL: Xo,
                                buildLine: Mo,
                                buildComplexPoly: function (t, e) {
                                    var r = t.points.slice();
                                    if (!(r.length < 6)) {
                                        var i = e.indices;
                                        e.points = r, e.alpha = t.fillAlpha, e.color = me(t.fillColor);
                                        for (var n = 1 / 0, o = -1 / 0, s = 1 / 0, a = -1 / 0, h = 0, u = 0, l = 0; l < r.length; l += 2) n = (h = r[l]) < n ? h : n, o = h > o ? h : o, s = (u = r[l + 1]) < s ? u : s, a = u > a ? u : a;
                                        r.push(n, s, o, s, o, a, n, a);
                                        for (var c = r.length / 2, d = 0; d < c; d++) i.push(d)
                                    }
                                },
                                bezierCurveTo: function (t, e, r, i, n, o, s, a, h, u) {
                                    void 0 === u && (u = []);
                                    var l = 0,
                                        c = 0,
                                        d = 0,
                                        p = 0,
                                        f = 0;
                                    u.push(t, e);
                                    for (var m = 1, g = 0; m <= h; ++m) d = (c = (l = 1 - (g = m / h)) * l) * l, f = (p = g * g) * g, u.push(d * t + 3 * c * g * r + 3 * l * p * n + f * s, d * e + 3 * c * g * i + 3 * l * p * o + f * a);
                                    return u
                                },
                                Star: Ro,
                                ArcUtils: No,
                                BezierUtils: Lo,
                                QuadraticUtils: Fo,
                                BatchPart: Bo
                            },
                            Ho = function (t, e, r, i) {
                                void 0 === e && (e = null), void 0 === r && (r = null), void 0 === i && (i = null), this.shape = t, this.lineStyle = r, this.fillStyle = e, this.matrix = i, this.type = t.type, this.points = [], this.holes = []
                            };
                        Ho.prototype.clone = function () {
                            return new Ho(this.shape, this.fillStyle, this.lineStyle, this.matrix)
                        }, Ho.prototype.destroy = function () {
                            this.shape = null, this.holes.length = 0, this.holes = null, this.points.length = 0, this.points = null, this.lineStyle = null, this.fillStyle = null
                        };
                        var Go = new Ve,
                            Yo = new dr,
                            zo = function (t) {
                                function r() {
                                    t.call(this), this.points = [], this.colors = [], this.uvs = [], this.indices = [], this.textureIds = [], this.graphicsData = [], this.dirty = 0, this.batchDirty = -1, this.cacheDirty = -1, this.clearDirty = 0, this.drawCalls = [], this.batches = [], this.shapeIndex = 0, this._bounds = new dr, this.boundsDirty = -1, this.boundsPadding = 0, this.batchable = !1, this.indicesUint16 = null, this.uvsFloat32 = null, this.closePointEps = 1e-4
                                }
                                t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r;
                                var i = {
                                    bounds: {
                                        configurable: !0
                                    }
                                };
                                return i.bounds.get = function () {
                                    return this.boundsDirty !== this.dirty && (this.boundsDirty = this.dirty, this.calculateBounds()), this._bounds
                                }, r.prototype.invalidate = function () {
                                    this.boundsDirty = -1, this.dirty++, this.batchDirty++, this.shapeIndex = 0, this.points.length = 0, this.colors.length = 0, this.uvs.length = 0, this.indices.length = 0, this.textureIds.length = 0;
                                    for (var t = 0; t < this.drawCalls.length; t++) this.drawCalls[t].textures.length = 0, Xo.push(this.drawCalls[t]);
                                    this.drawCalls.length = 0;
                                    for (var e = 0; e < this.batches.length; e++) {
                                        var r = this.batches[e];
                                        r.reset(), ko.push(r)
                                    }
                                    this.batches.length = 0
                                }, r.prototype.clear = function () {
                                    return this.graphicsData.length > 0 && (this.invalidate(), this.clearDirty++, this.graphicsData.length = 0), this
                                }, r.prototype.drawShape = function (t, e, r, i) {
                                    var n = new Ho(t, e, r, i);
                                    return this.graphicsData.push(n), this.dirty++, this
                                }, r.prototype.drawHole = function (t, e) {
                                    if (!this.graphicsData.length) return null;
                                    var r = new Ho(t, null, null, e),
                                        i = this.graphicsData[this.graphicsData.length - 1];
                                    return r.lineStyle = i.lineStyle, i.holes.push(r), this.dirty++, this
                                }, r.prototype.destroy = function (e) {
                                    t.prototype.destroy.call(this, e);
                                    for (var r = 0; r < this.graphicsData.length; ++r) this.graphicsData[r].destroy();
                                    this.points.length = 0, this.points = null, this.colors.length = 0, this.colors = null, this.uvs.length = 0, this.uvs = null, this.indices.length = 0, this.indices = null, this.indexBuffer.destroy(), this.indexBuffer = null, this.graphicsData.length = 0, this.graphicsData = null, this.drawCalls.length = 0, this.drawCalls = null, this.batches.length = 0, this.batches = null, this._bounds = null
                                }, r.prototype.containsPoint = function (t) {
                                    for (var e = this.graphicsData, r = 0; r < e.length; ++r) {
                                        var i = e[r];
                                        if (i.fillStyle.visible && (i.shape && (i.matrix ? i.matrix.applyInverse(t, Go) : Go.copyFrom(t), i.shape.contains(Go.x, Go.y)))) {
                                            var n = !1;
                                            if (i.holes)
                                                for (var o = 0; o < i.holes.length; o++) {
                                                    if (i.holes[o].shape.contains(Go.x, Go.y)) {
                                                        n = !0;
                                                        break
                                                    }
                                                }
                                            if (!n) return !0
                                        }
                                    }
                                    return !1
                                }, r.prototype.updateBatches = function () {
                                    if (this.graphicsData.length) {
                                        if (this.validateBatching()) {
                                            this.cacheDirty = this.dirty;
                                            var t = this.uvs,
                                                r = this.graphicsData,
                                                i = null,
                                                n = null;
                                            this.batches.length > 0 && (n = (i = this.batches[this.batches.length - 1]).style);
                                            for (var o = this.shapeIndex; o < r.length; o++) {
                                                this.shapeIndex++;
                                                var s = r[o],
                                                    a = s.fillStyle,
                                                    h = s.lineStyle;
                                                Uo[s.type].build(s), s.matrix && this.transformPoints(s.points, s.matrix);
                                                for (var u = 0; u < 2; u++) {
                                                    var l = 0 === u ? a : h;
                                                    if (l.visible) {
                                                        var c = l.texture.baseTexture,
                                                            d = this.indices.length,
                                                            p = this.points.length / 2;
                                                        c.wrapMode = e.WRAP_MODES.REPEAT, 0 === u ? this.processFill(s) : this.processLine(s);
                                                        var f = this.points.length / 2 - p;
                                                        0 !== f && (i && !this._compareStyles(n, l) && (i.end(d, p), i = null), i || ((i = ko.pop() || new Bo).begin(l, d, p), this.batches.push(i), n = l), this.addUvs(this.points, t, l.texture, p, f, l.matrix))
                                                    }
                                                }
                                            }
                                            if (i) {
                                                var m = this.indices.length,
                                                    g = this.points.length / 2;
                                                i.end(m, g)
                                            }
                                            0 !== this.batches.length ? (this.indicesUint16 = new Uint16Array(this.indices), this.batchable = this.isBatchable(), this.batchable ? this.packBatches() : this.buildDrawCalls()) : this.batchable = !0
                                        }
                                    } else this.batchable = !0
                                }, r.prototype._compareStyles = function (t, e) {
                                    return !(!t || !e) && (t.texture.baseTexture === e.texture.baseTexture && (t.color + t.alpha === e.color + e.alpha && !!t.native == !!e.native))
                                }, r.prototype.validateBatching = function () {
                                    if (this.dirty === this.cacheDirty || !this.graphicsData.length) return !1;
                                    for (var t = 0, e = this.graphicsData.length; t < e; t++) {
                                        var r = this.graphicsData[t],
                                            i = r.fillStyle,
                                            n = r.lineStyle;
                                        if (i && !i.texture.baseTexture.valid) return !1;
                                        if (n && !n.texture.baseTexture.valid) return !1
                                    }
                                    return !0
                                }, r.prototype.packBatches = function () {
                                    this.batchDirty++, this.uvsFloat32 = new Float32Array(this.uvs);
                                    for (var t = this.batches, e = 0, r = t.length; e < r; e++)
                                        for (var i = t[e], n = 0; n < i.size; n++) {
                                            var o = i.start + n;
                                            this.indicesUint16[o] = this.indicesUint16[o] - i.attribStart
                                        }
                                }, r.prototype.isBatchable = function () {
                                    for (var t = this.batches, e = 0; e < t.length; e++)
                                        if (t[e].style.native) return !1;
                                    return this.points.length < 2 * r.BATCHABLE_SIZE
                                }, r.prototype.buildDrawCalls = function () {
                                    for (var t = ++Hr._globalBatch, r = 0; r < this.drawCalls.length; r++) this.drawCalls[r].textures.length = 0, Xo.push(this.drawCalls[r]);
                                    this.drawCalls.length = 0;
                                    var i = this.colors,
                                        n = this.textureIds,
                                        o = Xo.pop();
                                    o || ((o = new Nn).textures = new Ln), o.textures.count = 0, o.start = 0, o.size = 0, o.type = e.DRAW_MODES.TRIANGLES;
                                    var s = 0,
                                        a = null,
                                        h = 0,
                                        u = !1,
                                        l = e.DRAW_MODES.TRIANGLES,
                                        c = 0;
                                    this.drawCalls.push(o);
                                    for (var d = 0; d < this.batches.length; d++) {
                                        var p = this.batches[d],
                                            f = p.style,
                                            m = f.texture.baseTexture;
                                        u !== !!f.native && (l = (u = !!f.native) ? e.DRAW_MODES.LINES : e.DRAW_MODES.TRIANGLES, a = null, s = 8, t++), a !== m && (a = m, m._batchEnabled !== t && (8 === s && (t++, s = 0, o.size > 0 && ((o = Xo.pop()) || ((o = new Nn).textures = new Ln), this.drawCalls.push(o)), o.start = c, o.size = 0, o.textures.count = 0, o.type = l), m.touched = 1, m._batchEnabled = t, m._batchLocation = s, m.wrapMode = 10497, o.textures.elements[o.textures.count++] = m, s++)), o.size += p.size, c += p.size, h = m._batchLocation, this.addColors(i, f.color, f.alpha, p.attribSize), this.addTextureIds(n, h, p.attribSize)
                                    }
                                    Hr._globalBatch = t, this.packAttributes()
                                }, r.prototype.packAttributes = function () {
                                    for (var t = this.points, e = this.uvs, r = this.colors, i = this.textureIds, n = new ArrayBuffer(3 * t.length * 4), o = new Float32Array(n), s = new Uint32Array(n), a = 0, h = 0; h < t.length / 2; h++) o[a++] = t[2 * h], o[a++] = t[2 * h + 1], o[a++] = e[2 * h], o[a++] = e[2 * h + 1], s[a++] = r[h], o[a++] = i[h];
                                    this._buffer.update(n), this._indexBuffer.update(this.indicesUint16)
                                }, r.prototype.processFill = function (t) {
                                    t.holes.length ? (this.processHoles(t.holes), Io.triangulate(t, this)) : Uo[t.type].triangulate(t, this)
                                }, r.prototype.processLine = function (t) {
                                    Mo(t, this);
                                    for (var e = 0; e < t.holes.length; e++) Mo(t.holes[e], this)
                                }, r.prototype.processHoles = function (t) {
                                    for (var e = 0; e < t.length; e++) {
                                        var r = t[e];
                                        Uo[r.type].build(r), r.matrix && this.transformPoints(r.points, r.matrix)
                                    }
                                }, r.prototype.calculateBounds = function () {
                                    var t = this._bounds,
                                        r = Yo,
                                        i = $e.IDENTITY;
                                    this._bounds.clear(), r.clear();
                                    for (var n = 0; n < this.graphicsData.length; n++) {
                                        var o = this.graphicsData[n],
                                            s = o.shape,
                                            a = o.type,
                                            h = o.lineStyle,
                                            u = o.matrix || $e.IDENTITY,
                                            l = 0;
                                        if (h && h.visible) {
                                            var c = h.alignment;
                                            l = h.width, a === e.SHAPES.POLY ? l *= .5 + Math.abs(.5 - c) : l *= Math.max(0, c)
                                        }
                                        i !== u && (r.isEmpty() || (t.addBoundsMatrix(r, i), r.clear()), i = u), a === e.SHAPES.RECT || a === e.SHAPES.RREC ? r.addFramePad(s.x, s.y, s.x + s.width, s.y + s.height, l, l) : a === e.SHAPES.CIRC ? r.addFramePad(s.x, s.y, s.x, s.y, s.radius + l, s.radius + l) : a === e.SHAPES.ELIP ? r.addFramePad(s.x, s.y, s.x, s.y, s.width + l, s.height + l) : t.addVerticesMatrix(i, s.points, 0, s.points.length, l, l)
                                    }
                                    r.isEmpty() || t.addBoundsMatrix(r, i), t.pad(this.boundsPadding, this.boundsPadding)
                                }, r.prototype.transformPoints = function (t, e) {
                                    for (var r = 0; r < t.length / 2; r++) {
                                        var i = t[2 * r],
                                            n = t[2 * r + 1];
                                        t[2 * r] = e.a * i + e.c * n + e.tx, t[2 * r + 1] = e.b * i + e.d * n + e.ty
                                    }
                                }, r.prototype.addColors = function (t, e, r, i) {
                                    for (var n = be((e >> 16) + (65280 & e) + ((255 & e) << 16), r); i-- > 0;) t.push(n)
                                }, r.prototype.addTextureIds = function (t, e, r) {
                                    for (; r-- > 0;) t.push(e)
                                }, r.prototype.addUvs = function (t, e, r, i, n, o) {
                                    for (var s = 0, a = e.length, h = r.frame; s < n;) {
                                        var u = t[2 * (i + s)],
                                            l = t[2 * (i + s) + 1];
                                        if (o) {
                                            var c = o.a * u + o.c * l + o.tx;
                                            l = o.b * u + o.d * l + o.ty, u = c
                                        }
                                        s++, e.push(u / h.width, l / h.height)
                                    }
                                    var d = r.baseTexture;
                                    (h.width < d.width || h.height < d.height) && this.adjustUvs(e, r, a, n)
                                }, r.prototype.adjustUvs = function (t, e, r, i) {
                                    for (var n = e.baseTexture, o = 1e-6, s = r + 2 * i, a = e.frame, h = a.width / n.width, u = a.height / n.height, l = a.x / a.width, c = a.y / a.height, d = Math.floor(t[r] + o), p = Math.floor(t[r + 1] + o), f = r + 2; f < s; f += 2) d = Math.min(d, Math.floor(t[f] + o)), p = Math.min(p, Math.floor(t[f + 1] + o));
                                    l -= d, c -= p;
                                    for (var m = r; m < s; m += 2) t[m] = (t[m] + l) * h, t[m + 1] = (t[m + 1] + c) * u
                                }, Object.defineProperties(r.prototype, i), r
                            }(Xn);
                        zo.BATCHABLE_SIZE = 100;
                        var Vo = function (t) {
                                function e() {
                                    t.apply(this, arguments)
                                }
                                return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.clone = function () {
                                    var t = new e;
                                    return t.color = this.color, t.alpha = this.alpha, t.texture = this.texture, t.matrix = this.matrix, t.visible = this.visible, t.width = this.width, t.alignment = this.alignment, t.native = this.native, t
                                }, e.prototype.reset = function () {
                                    t.prototype.reset.call(this), this.color = 0, this.width = 0, this.alignment = .5, this.native = !1
                                }, e
                            }(So),
                            Wo = new Float32Array(3),
                            qo = {},
                            Ko = function (t) {
                                function r(r) {
                                    void 0 === r && (r = null), t.call(this), this.geometry = r || new zo, this.geometry.refCount++, this.shader = null, this.state = nn.for2d(), this._fillStyle = new So, this._lineStyle = new Vo, this._matrix = null, this._holeMode = !1, this.currentPath = null, this.batches = [], this.batchTint = -1, this.vertexData = null, this._transformID = -1, this.batchDirty = -1, this.pluginName = "batch", this.tint = 16777215, this.blendMode = e.BLEND_MODES.NORMAL
                                }
                                t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r;
                                var i = {
                                    blendMode: {
                                        configurable: !0
                                    },
                                    tint: {
                                        configurable: !0
                                    },
                                    fill: {
                                        configurable: !0
                                    },
                                    line: {
                                        configurable: !0
                                    }
                                };
                                return r.prototype.clone = function () {
                                    return this.finishPoly(), new r(this.geometry)
                                }, i.blendMode.set = function (t) {
                                    this.state.blendMode = t
                                }, i.blendMode.get = function () {
                                    return this.state.blendMode
                                }, i.tint.get = function () {
                                    return this._tint
                                }, i.tint.set = function (t) {
                                    this._tint = t
                                }, i.fill.get = function () {
                                    return this._fillStyle
                                }, i.line.get = function () {
                                    return this._lineStyle
                                }, r.prototype.lineStyle = function (t) {
                                    if ("number" == typeof t) {
                                        var e = arguments;
                                        t = {
                                            width: e[0] || 0,
                                            color: e[1] || 0,
                                            alpha: void 0 !== e[2] ? e[2] : 1,
                                            alignment: void 0 !== e[3] ? e[3] : .5,
                                            native: !!e[4]
                                        }
                                    }
                                    return this.lineTextureStyle(t)
                                }, r.prototype.lineTextureStyle = function (t) {
                                    if ("number" == typeof t) {
                                        Ne("v5.2.0", "Please use object-based options for Graphics#lineTextureStyle");
                                        var e = arguments[0],
                                            r = arguments[1],
                                            i = arguments[2],
                                            n = arguments[3],
                                            o = arguments[4],
                                            s = arguments[5],
                                            a = arguments[6];
                                        t = {
                                            width: e,
                                            texture: r,
                                            color: i,
                                            alpha: n,
                                            matrix: o,
                                            alignment: s,
                                            native: a
                                        }, Object.keys(t).forEach((function (e) {
                                            return void 0 === t[e] && delete t[e]
                                        }))
                                    }
                                    t = Object.assign({
                                        width: 0,
                                        texture: ii.WHITE,
                                        color: t && t.texture ? 16777215 : 0,
                                        alpha: 1,
                                        matrix: null,
                                        alignment: .5,
                                        native: !1
                                    }, t), this.currentPath && this.startPoly();
                                    var h = t.width > 0 && t.alpha > 0;
                                    return h ? (t.matrix && (t.matrix = t.matrix.clone(), t.matrix.invert()), Object.assign(this._lineStyle, {
                                        visible: h
                                    }, t)) : this._lineStyle.reset(), this
                                }, r.prototype.startPoly = function () {
                                    if (this.currentPath) {
                                        var t = this.currentPath.points,
                                            e = this.currentPath.points.length;
                                        e > 2 && (this.drawShape(this.currentPath), this.currentPath = new lr, this.currentPath.closeStroke = !1, this.currentPath.points.push(t[e - 2], t[e - 1]))
                                    } else this.currentPath = new lr, this.currentPath.closeStroke = !1
                                }, r.prototype.finishPoly = function () {
                                    this.currentPath && (this.currentPath.points.length > 2 ? (this.drawShape(this.currentPath), this.currentPath = null) : this.currentPath.points.length = 0)
                                }, r.prototype.moveTo = function (t, e) {
                                    return this.startPoly(), this.currentPath.points[0] = t, this.currentPath.points[1] = e, this
                                }, r.prototype.lineTo = function (t, e) {
                                    this.currentPath || this.moveTo(0, 0);
                                    var r = this.currentPath.points,
                                        i = r[r.length - 2],
                                        n = r[r.length - 1];
                                    return i === t && n === e || r.push(t, e), this
                                }, r.prototype._initCurve = function (t, e) {
                                    void 0 === t && (t = 0), void 0 === e && (e = 0), this.currentPath ? 0 === this.currentPath.points.length && (this.currentPath.points = [t, e]) : this.moveTo(t, e)
                                }, r.prototype.quadraticCurveTo = function (t, e, r, i) {
                                    this._initCurve();
                                    var n = this.currentPath.points;
                                    return 0 === n.length && this.moveTo(0, 0), Fo.curveTo(t, e, r, i, n), this
                                }, r.prototype.bezierCurveTo = function (t, e, r, i, n, o) {
                                    return this._initCurve(), Lo.curveTo(t, e, r, i, n, o, this.currentPath.points), this
                                }, r.prototype.arcTo = function (t, e, r, i, n) {
                                    this._initCurve(t, e);
                                    var o = this.currentPath.points,
                                        s = No.curveTo(t, e, r, i, n, o);
                                    if (s) {
                                        var a = s.cx,
                                            h = s.cy,
                                            u = s.radius,
                                            l = s.startAngle,
                                            c = s.endAngle,
                                            d = s.anticlockwise;
                                        this.arc(a, h, u, l, c, d)
                                    }
                                    return this
                                }, r.prototype.arc = function (t, e, r, i, n, o) {
                                    if (void 0 === o && (o = !1), i === n) return this;
                                    if (!o && n <= i ? n += qe : o && i <= n && (i += qe), 0 === n - i) return this;
                                    var s = t + Math.cos(i) * r,
                                        a = e + Math.sin(i) * r,
                                        h = this.geometry.closePointEps,
                                        u = this.currentPath ? this.currentPath.points : null;
                                    if (u) {
                                        var l = Math.abs(u[u.length - 2] - s),
                                            c = Math.abs(u[u.length - 1] - a);
                                        l < h && c < h || u.push(s, a)
                                    } else this.moveTo(s, a), u = this.currentPath.points;
                                    return No.arc(s, a, t, e, r, i, n, o, u), this
                                }, r.prototype.beginFill = function (t, e) {
                                    return void 0 === t && (t = 0), void 0 === e && (e = 1), this.beginTextureFill({
                                        texture: ii.WHITE,
                                        color: t,
                                        alpha: e
                                    })
                                }, r.prototype.beginTextureFill = function (t) {
                                    if (t instanceof ii) {
                                        Ne("v5.2.0", "Please use object-based options for Graphics#beginTextureFill");
                                        var e = arguments[0],
                                            r = arguments[1],
                                            i = arguments[2],
                                            n = arguments[3];
                                        t = {
                                            texture: e,
                                            color: r,
                                            alpha: i,
                                            matrix: n
                                        }, Object.keys(t).forEach((function (e) {
                                            return void 0 === t[e] && delete t[e]
                                        }))
                                    }
                                    t = Object.assign({
                                        texture: ii.WHITE,
                                        color: 16777215,
                                        alpha: 1,
                                        matrix: null
                                    }, t), this.currentPath && this.startPoly();
                                    var o = t.alpha > 0;
                                    return o ? (t.matrix && (t.matrix = t.matrix.clone(), t.matrix.invert()), Object.assign(this._fillStyle, {
                                        visible: o
                                    }, t)) : this._fillStyle.reset(), this
                                }, r.prototype.endFill = function () {
                                    return this.finishPoly(), this._fillStyle.reset(), this
                                }, r.prototype.drawRect = function (t, e, r, i) {
                                    return this.drawShape(new ar(t, e, r, i))
                                }, r.prototype.drawRoundedRect = function (t, e, r, i, n) {
                                    return this.drawShape(new cr(t, e, r, i, n))
                                }, r.prototype.drawCircle = function (t, e, r) {
                                    return this.drawShape(new hr(t, e, r))
                                }, r.prototype.drawEllipse = function (t, e, r, i) {
                                    return this.drawShape(new ur(t, e, r, i))
                                }, r.prototype.drawPolygon = function (t) {
                                    var e = arguments,
                                        r = t,
                                        i = !0;
                                    if (r.points && (i = r.closeStroke, r = r.points), !Array.isArray(r)) {
                                        r = new Array(arguments.length);
                                        for (var n = 0; n < r.length; ++n) r[n] = e[n]
                                    }
                                    var o = new lr(r);
                                    return o.closeStroke = i, this.drawShape(o), this
                                }, r.prototype.drawShape = function (t) {
                                    return this._holeMode ? this.geometry.drawHole(t, this._matrix) : this.geometry.drawShape(t, this._fillStyle.clone(), this._lineStyle.clone(), this._matrix), this
                                }, r.prototype.drawStar = function (t, e, r, i, n, o) {
                                    return void 0 === o && (o = 0), this.drawPolygon(new Ro(t, e, r, i, n, o))
                                }, r.prototype.clear = function () {
                                    return this.geometry.clear(), this._lineStyle.reset(), this._fillStyle.reset(), this._matrix = null, this._holeMode = !1, this.currentPath = null, this
                                }, r.prototype.isFastRect = function () {
                                    return 1 === this.geometry.graphicsData.length && this.geometry.graphicsData[0].shape.type === e.SHAPES.RECT && !this.geometry.graphicsData[0].lineWidth
                                }, r.prototype._render = function (t) {
                                    this.finishPoly();
                                    var e = this.geometry;
                                    e.updateBatches(), e.batchable ? (this.batchDirty !== e.batchDirty && this._populateBatches(), this._renderBatched(t)) : (t.batch.flush(), this._renderDirect(t))
                                }, r.prototype._populateBatches = function () {
                                    var t = this.geometry,
                                        e = this.blendMode;
                                    this.batches = [], this.batchTint = -1, this._transformID = -1, this.batchDirty = t.batchDirty, this.vertexData = new Float32Array(t.points);
                                    for (var r = 0, i = t.batches.length; r < i; r++) {
                                        var n = t.batches[r],
                                            o = n.style.color,
                                            s = new Float32Array(this.vertexData.buffer, 4 * n.attribStart * 2, 2 * n.attribSize),
                                            a = new Float32Array(t.uvsFloat32.buffer, 4 * n.attribStart * 2, 2 * n.attribSize),
                                            h = {
                                                vertexData: s,
                                                blendMode: e,
                                                indices: new Uint16Array(t.indicesUint16.buffer, 2 * n.start, n.size),
                                                uvs: a,
                                                _batchRGB: me(o),
                                                _tintRGB: o,
                                                _texture: n.style.texture,
                                                alpha: n.style.alpha,
                                                worldAlpha: 1
                                            };
                                        this.batches[r] = h
                                    }
                                }, r.prototype._renderBatched = function (t) {
                                    if (this.batches.length) {
                                        t.batch.setObjectRenderer(t.plugins[this.pluginName]), this.calculateVertices(), this.calculateTints();
                                        for (var e = 0, r = this.batches.length; e < r; e++) {
                                            var i = this.batches[e];
                                            i.worldAlpha = this.worldAlpha * i.alpha, t.plugins[this.pluginName].render(i)
                                        }
                                    }
                                }, r.prototype._renderDirect = function (t) {
                                    var e = this._resolveDirectShader(t),
                                        r = this.geometry,
                                        i = this.tint,
                                        n = this.worldAlpha,
                                        o = e.uniforms,
                                        s = r.drawCalls;
                                    o.translationMatrix = this.transform.worldTransform, o.tint[0] = (i >> 16 & 255) / 255 * n, o.tint[1] = (i >> 8 & 255) / 255 * n, o.tint[2] = (255 & i) / 255 * n, o.tint[3] = n, t.shader.bind(e), t.geometry.bind(r, e), t.state.set(this.state);
                                    for (var a = 0, h = s.length; a < h; a++) this._renderDrawCallDirect(t, r.drawCalls[a])
                                }, r.prototype._renderDrawCallDirect = function (t, e) {
                                    for (var r = e.textures, i = e.type, n = e.size, o = e.start, s = r.count, a = 0; a < s; a++) t.texture.bind(r.elements[a], a);
                                    t.geometry.draw(i, n, o)
                                }, r.prototype._resolveDirectShader = function (t) {
                                    var e = this.shader,
                                        r = this.pluginName;
                                    if (!e) {
                                        if (!qo[r]) {
                                            for (var i = new Int32Array(16), n = 0; n < 16; n++) i[n] = n;
                                            var o = {
                                                    tint: new Float32Array([1, 1, 1, 1]),
                                                    translationMatrix: new $e,
                                                    default: _i.from({
                                                        uSamplers: i
                                                    }, !0)
                                                },
                                                s = t.plugins[r]._shader.program;
                                            qo[r] = new en(s, o)
                                        }
                                        e = qo[r]
                                    }
                                    return e
                                }, r.prototype._calculateBounds = function () {
                                    this.finishPoly();
                                    var t = this.geometry;
                                    if (t.graphicsData.length) {
                                        var e = t.bounds,
                                            r = e.minX,
                                            i = e.minY,
                                            n = e.maxX,
                                            o = e.maxY;
                                        this._bounds.addFrame(this.transform, r, i, n, o)
                                    }
                                }, r.prototype.containsPoint = function (t) {
                                    return this.worldTransform.applyInverse(t, r._TEMP_POINT), this.geometry.containsPoint(r._TEMP_POINT)
                                }, r.prototype.calculateTints = function () {
                                    if (this.batchTint !== this.tint) {
                                        this.batchTint = this.tint;
                                        for (var t = me(this.tint, Wo), e = 0; e < this.batches.length; e++) {
                                            var r = this.batches[e],
                                                i = r._batchRGB,
                                                n = (t[0] * i[0] * 255 << 16) + (t[1] * i[1] * 255 << 8) + (0 | t[2] * i[2] * 255);
                                            r._tintRGB = (n >> 16) + (65280 & n) + ((255 & n) << 16)
                                        }
                                    }
                                }, r.prototype.calculateVertices = function () {
                                    if (this._transformID !== this.transform._worldID) {
                                        this._transformID = this.transform._worldID;
                                        for (var t = this.transform.worldTransform, e = t.a, r = t.b, i = t.c, n = t.d, o = t.tx, s = t.ty, a = this.geometry.points, h = this.vertexData, u = 0, l = 0; l < a.length; l += 2) {
                                            var c = a[l],
                                                d = a[l + 1];
                                            h[u++] = e * c + i * d + o, h[u++] = n * d + r * c + s
                                        }
                                    }
                                }, r.prototype.closePath = function () {
                                    var t = this.currentPath;
                                    return t && (t.closeStroke = !0), this
                                }, r.prototype.setMatrix = function (t) {
                                    return this._matrix = t, this
                                }, r.prototype.beginHole = function () {
                                    return this.finishPoly(), this._holeMode = !0, this
                                }, r.prototype.endHole = function () {
                                    return this.finishPoly(), this._holeMode = !1, this
                                }, r.prototype.destroy = function (e) {
                                    t.prototype.destroy.call(this, e), this.geometry.refCount--, 0 === this.geometry.refCount && this.geometry.dispose(), this._matrix = null, this.currentPath = null, this._lineStyle.destroy(), this._lineStyle = null, this._fillStyle.destroy(), this._fillStyle = null, this.geometry = null, this.shader = null, this.vertexData = null, this.batches.length = 0, this.batches = null, t.prototype.destroy.call(this, e)
                                }, Object.defineProperties(r.prototype, i), r
                            }(mr);
                        Ko._TEMP_POINT = new Ve;
                        /*!
                         * @pixi/sprite - v5.2.1
                         * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                         *
                         * @pixi/sprite is licensed under the MIT License.
                         * http://www.opensource.org/licenses/mit-license
                         */
                        var Zo = new Ve,
                            $o = new Uint16Array([0, 1, 2, 0, 2, 3]),
                            Jo = function (t) {
                                function r(r) {
                                    t.call(this), this._anchor = new We(this._onAnchorUpdate, this, r ? r.defaultAnchor.x : 0, r ? r.defaultAnchor.y : 0), this._texture = null, this._width = 0, this._height = 0, this._tint = null, this._tintRGB = null, this.tint = 16777215, this.blendMode = e.BLEND_MODES.NORMAL, this.shader = null, this._cachedTint = 16777215, this.uvs = null, this.texture = r || ii.EMPTY, this.vertexData = new Float32Array(8), this.vertexTrimmedData = null, this._transformID = -1, this._textureID = -1, this._transformTrimmedID = -1, this._textureTrimmedID = -1, this.indices = $o, this.size = 4, this.start = 0, this.pluginName = "batch", this.isSprite = !0, this._roundPixels = V.ROUND_PIXELS
                                }
                                t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r;
                                var i = {
                                    roundPixels: {
                                        configurable: !0
                                    },
                                    width: {
                                        configurable: !0
                                    },
                                    height: {
                                        configurable: !0
                                    },
                                    anchor: {
                                        configurable: !0
                                    },
                                    tint: {
                                        configurable: !0
                                    },
                                    texture: {
                                        configurable: !0
                                    }
                                };
                                return r.prototype._onTextureUpdate = function () {
                                    this._textureID = -1, this._textureTrimmedID = -1, this._cachedTint = 16777215, this._width && (this.scale.x = De(this.scale.x) * this._width / this._texture.orig.width), this._height && (this.scale.y = De(this.scale.y) * this._height / this._texture.orig.height)
                                }, r.prototype._onAnchorUpdate = function () {
                                    this._transformID = -1, this._transformTrimmedID = -1
                                }, r.prototype.calculateVertices = function () {
                                    var t = this._texture;
                                    if (this._transformID !== this.transform._worldID || this._textureID !== t._updateID) {
                                        this._textureID !== t._updateID && (this.uvs = this._texture._uvs.uvsFloat32), this._transformID = this.transform._worldID, this._textureID = t._updateID;
                                        var e = this.transform.worldTransform,
                                            r = e.a,
                                            i = e.b,
                                            n = e.c,
                                            o = e.d,
                                            s = e.tx,
                                            a = e.ty,
                                            h = this.vertexData,
                                            u = t.trim,
                                            l = t.orig,
                                            c = this._anchor,
                                            d = 0,
                                            p = 0,
                                            f = 0,
                                            m = 0;
                                        if (u ? (d = (p = u.x - c._x * l.width) + u.width, f = (m = u.y - c._y * l.height) + u.height) : (d = (p = -c._x * l.width) + l.width, f = (m = -c._y * l.height) + l.height), h[0] = r * p + n * m + s, h[1] = o * m + i * p + a, h[2] = r * d + n * m + s, h[3] = o * m + i * d + a, h[4] = r * d + n * f + s, h[5] = o * f + i * d + a, h[6] = r * p + n * f + s, h[7] = o * f + i * p + a, this._roundPixels)
                                            for (var g = V.RESOLUTION, v = 0; v < h.length; ++v) h[v] = Math.round((h[v] * g | 0) / g)
                                    }
                                }, r.prototype.calculateTrimmedVertices = function () {
                                    if (this.vertexTrimmedData) {
                                        if (this._transformTrimmedID === this.transform._worldID && this._textureTrimmedID === this._texture._updateID) return
                                    } else this.vertexTrimmedData = new Float32Array(8);
                                    this._transformTrimmedID = this.transform._worldID, this._textureTrimmedID = this._texture._updateID;
                                    var t = this._texture,
                                        e = this.vertexTrimmedData,
                                        r = t.orig,
                                        i = this._anchor,
                                        n = this.transform.worldTransform,
                                        o = n.a,
                                        s = n.b,
                                        a = n.c,
                                        h = n.d,
                                        u = n.tx,
                                        l = n.ty,
                                        c = -i._x * r.width,
                                        d = c + r.width,
                                        p = -i._y * r.height,
                                        f = p + r.height;
                                    e[0] = o * c + a * p + u, e[1] = h * p + s * c + l, e[2] = o * d + a * p + u, e[3] = h * p + s * d + l, e[4] = o * d + a * f + u, e[5] = h * f + s * d + l, e[6] = o * c + a * f + u, e[7] = h * f + s * c + l
                                }, r.prototype._render = function (t) {
                                    this.calculateVertices(), t.batch.setObjectRenderer(t.plugins[this.pluginName]), t.plugins[this.pluginName].render(this)
                                }, r.prototype._calculateBounds = function () {
                                    var t = this._texture.trim,
                                        e = this._texture.orig;
                                    !t || t.width === e.width && t.height === e.height ? (this.calculateVertices(), this._bounds.addQuad(this.vertexData)) : (this.calculateTrimmedVertices(), this._bounds.addQuad(this.vertexTrimmedData))
                                }, r.prototype.getLocalBounds = function (e) {
                                    return 0 === this.children.length ? (this._bounds.minX = this._texture.orig.width * -this._anchor._x, this._bounds.minY = this._texture.orig.height * -this._anchor._y, this._bounds.maxX = this._texture.orig.width * (1 - this._anchor._x), this._bounds.maxY = this._texture.orig.height * (1 - this._anchor._y), e || (this._localBoundsRect || (this._localBoundsRect = new ar), e = this._localBoundsRect), this._bounds.getRectangle(e)) : t.prototype.getLocalBounds.call(this, e)
                                }, r.prototype.containsPoint = function (t) {
                                    this.worldTransform.applyInverse(t, Zo);
                                    var e = this._texture.orig.width,
                                        r = this._texture.orig.height,
                                        i = -e * this.anchor.x,
                                        n = 0;
                                    return Zo.x >= i && Zo.x < i + e && (n = -r * this.anchor.y, Zo.y >= n && Zo.y < n + r)
                                }, r.prototype.destroy = function (e) {
                                    if (t.prototype.destroy.call(this, e), this._texture.off("update", this._onTextureUpdate, this), this._anchor = null, "boolean" == typeof e ? e : e && e.texture) {
                                        var r = "boolean" == typeof e ? e : e && e.baseTexture;
                                        this._texture.destroy(!!r)
                                    }
                                    this._texture = null, this.shader = null
                                }, r.from = function (t, e) {
                                    return new r(t instanceof ii ? t : ii.from(t, e))
                                }, i.roundPixels.set = function (t) {
                                    this._roundPixels !== t && (this._transformID = -1), this._roundPixels = t
                                }, i.roundPixels.get = function () {
                                    return this._roundPixels
                                }, i.width.get = function () {
                                    return Math.abs(this.scale.x) * this._texture.orig.width
                                }, i.width.set = function (t) {
                                    var e = De(this.scale.x) || 1;
                                    this.scale.x = e * t / this._texture.orig.width, this._width = t
                                }, i.height.get = function () {
                                    return Math.abs(this.scale.y) * this._texture.orig.height
                                }, i.height.set = function (t) {
                                    var e = De(this.scale.y) || 1;
                                    this.scale.y = e * t / this._texture.orig.height, this._height = t
                                }, i.anchor.get = function () {
                                    return this._anchor
                                }, i.anchor.set = function (t) {
                                    this._anchor.copyFrom(t)
                                }, i.tint.get = function () {
                                    return this._tint
                                }, i.tint.set = function (t) {
                                    this._tint = t, this._tintRGB = (t >> 16) + (65280 & t) + ((255 & t) << 16)
                                }, i.texture.get = function () {
                                    return this._texture
                                }, i.texture.set = function (t) {
                                    this._texture !== t && (this._texture && this._texture.off("update", this._onTextureUpdate, this), this._texture = t || ii.EMPTY, this._cachedTint = 16777215, this._textureID = -1, this._textureTrimmedID = -1, t && (t.baseTexture.valid ? this._onTextureUpdate() : t.once("update", this._onTextureUpdate, this)))
                                }, Object.defineProperties(r.prototype, i), r
                            }(mr),
                            Qo = {
                                LINEAR_VERTICAL: 0,
                                LINEAR_HORIZONTAL: 1
                            },
                            ts = {
                                align: "left",
                                breakWords: !1,
                                dropShadow: !1,
                                dropShadowAlpha: 1,
                                dropShadowAngle: Math.PI / 6,
                                dropShadowBlur: 0,
                                dropShadowColor: "black",
                                dropShadowDistance: 5,
                                fill: "black",
                                fillGradientType: Qo.LINEAR_VERTICAL,
                                fillGradientStops: [],
                                fontFamily: "Arial",
                                fontSize: 26,
                                fontStyle: "normal",
                                fontVariant: "normal",
                                fontWeight: "normal",
                                letterSpacing: 0,
                                lineHeight: 0,
                                lineJoin: "miter",
                                miterLimit: 10,
                                padding: 0,
                                stroke: "black",
                                strokeThickness: 0,
                                textBaseline: "alphabetic",
                                trim: !1,
                                whiteSpace: "pre",
                                wordWrap: !1,
                                wordWrapWidth: 100,
                                leading: 0
                            },
                            es = ["serif", "sans-serif", "monospace", "cursive", "fantasy", "system-ui"],
                            rs = function (t) {
                                this.styleID = 0, this.reset(), ss(this, t, t)
                            },
                            is = {
                                align: {
                                    configurable: !0
                                },
                                breakWords: {
                                    configurable: !0
                                },
                                dropShadow: {
                                    configurable: !0
                                },
                                dropShadowAlpha: {
                                    configurable: !0
                                },
                                dropShadowAngle: {
                                    configurable: !0
                                },
                                dropShadowBlur: {
                                    configurable: !0
                                },
                                dropShadowColor: {
                                    configurable: !0
                                },
                                dropShadowDistance: {
                                    configurable: !0
                                },
                                fill: {
                                    configurable: !0
                                },
                                fillGradientType: {
                                    configurable: !0
                                },
                                fillGradientStops: {
                                    configurable: !0
                                },
                                fontFamily: {
                                    configurable: !0
                                },
                                fontSize: {
                                    configurable: !0
                                },
                                fontStyle: {
                                    configurable: !0
                                },
                                fontVariant: {
                                    configurable: !0
                                },
                                fontWeight: {
                                    configurable: !0
                                },
                                letterSpacing: {
                                    configurable: !0
                                },
                                lineHeight: {
                                    configurable: !0
                                },
                                leading: {
                                    configurable: !0
                                },
                                lineJoin: {
                                    configurable: !0
                                },
                                miterLimit: {
                                    configurable: !0
                                },
                                padding: {
                                    configurable: !0
                                },
                                stroke: {
                                    configurable: !0
                                },
                                strokeThickness: {
                                    configurable: !0
                                },
                                textBaseline: {
                                    configurable: !0
                                },
                                trim: {
                                    configurable: !0
                                },
                                whiteSpace: {
                                    configurable: !0
                                },
                                wordWrap: {
                                    configurable: !0
                                },
                                wordWrapWidth: {
                                    configurable: !0
                                }
                            };

                        function ns(t) {
                            return "number" == typeof t ? ge(t) : ("string" == typeof t && 0 === t.indexOf("0x") && (t = t.replace("0x", "#")), t)
                        }

                        function os(t) {
                            if (Array.isArray(t)) {
                                for (var e = 0; e < t.length; ++e) t[e] = ns(t[e]);
                                return t
                            }
                            return ns(t)
                        }

                        function ss(t, e, r) {
                            for (var i in r) Array.isArray(e[i]) ? t[i] = e[i].slice() : t[i] = e[i]
                        }
                        rs.prototype.clone = function () {
                            var t = {};
                            return ss(t, this, ts), new rs(t)
                        }, rs.prototype.reset = function () {
                            ss(this, ts, ts)
                        }, is.align.get = function () {
                            return this._align
                        }, is.align.set = function (t) {
                            this._align !== t && (this._align = t, this.styleID++)
                        }, is.breakWords.get = function () {
                            return this._breakWords
                        }, is.breakWords.set = function (t) {
                            this._breakWords !== t && (this._breakWords = t, this.styleID++)
                        }, is.dropShadow.get = function () {
                            return this._dropShadow
                        }, is.dropShadow.set = function (t) {
                            this._dropShadow !== t && (this._dropShadow = t, this.styleID++)
                        }, is.dropShadowAlpha.get = function () {
                            return this._dropShadowAlpha
                        }, is.dropShadowAlpha.set = function (t) {
                            this._dropShadowAlpha !== t && (this._dropShadowAlpha = t, this.styleID++)
                        }, is.dropShadowAngle.get = function () {
                            return this._dropShadowAngle
                        }, is.dropShadowAngle.set = function (t) {
                            this._dropShadowAngle !== t && (this._dropShadowAngle = t, this.styleID++)
                        }, is.dropShadowBlur.get = function () {
                            return this._dropShadowBlur
                        }, is.dropShadowBlur.set = function (t) {
                            this._dropShadowBlur !== t && (this._dropShadowBlur = t, this.styleID++)
                        }, is.dropShadowColor.get = function () {
                            return this._dropShadowColor
                        }, is.dropShadowColor.set = function (t) {
                            var e = os(t);
                            this._dropShadowColor !== e && (this._dropShadowColor = e, this.styleID++)
                        }, is.dropShadowDistance.get = function () {
                            return this._dropShadowDistance
                        }, is.dropShadowDistance.set = function (t) {
                            this._dropShadowDistance !== t && (this._dropShadowDistance = t, this.styleID++)
                        }, is.fill.get = function () {
                            return this._fill
                        }, is.fill.set = function (t) {
                            var e = os(t);
                            this._fill !== e && (this._fill = e, this.styleID++)
                        }, is.fillGradientType.get = function () {
                            return this._fillGradientType
                        }, is.fillGradientType.set = function (t) {
                            this._fillGradientType !== t && (this._fillGradientType = t, this.styleID++)
                        }, is.fillGradientStops.get = function () {
                            return this._fillGradientStops
                        }, is.fillGradientStops.set = function (t) {
                            (function (t, e) {
                                if (!Array.isArray(t) || !Array.isArray(e)) return !1;
                                if (t.length !== e.length) return !1;
                                for (var r = 0; r < t.length; ++r)
                                    if (t[r] !== e[r]) return !1;
                                return !0
                            })(this._fillGradientStops, t) || (this._fillGradientStops = t, this.styleID++)
                        }, is.fontFamily.get = function () {
                            return this._fontFamily
                        }, is.fontFamily.set = function (t) {
                            this.fontFamily !== t && (this._fontFamily = t, this.styleID++)
                        }, is.fontSize.get = function () {
                            return this._fontSize
                        }, is.fontSize.set = function (t) {
                            this._fontSize !== t && (this._fontSize = t, this.styleID++)
                        }, is.fontStyle.get = function () {
                            return this._fontStyle
                        }, is.fontStyle.set = function (t) {
                            this._fontStyle !== t && (this._fontStyle = t, this.styleID++)
                        }, is.fontVariant.get = function () {
                            return this._fontVariant
                        }, is.fontVariant.set = function (t) {
                            this._fontVariant !== t && (this._fontVariant = t, this.styleID++)
                        }, is.fontWeight.get = function () {
                            return this._fontWeight
                        }, is.fontWeight.set = function (t) {
                            this._fontWeight !== t && (this._fontWeight = t, this.styleID++)
                        }, is.letterSpacing.get = function () {
                            return this._letterSpacing
                        }, is.letterSpacing.set = function (t) {
                            this._letterSpacing !== t && (this._letterSpacing = t, this.styleID++)
                        }, is.lineHeight.get = function () {
                            return this._lineHeight
                        }, is.lineHeight.set = function (t) {
                            this._lineHeight !== t && (this._lineHeight = t, this.styleID++)
                        }, is.leading.get = function () {
                            return this._leading
                        }, is.leading.set = function (t) {
                            this._leading !== t && (this._leading = t, this.styleID++)
                        }, is.lineJoin.get = function () {
                            return this._lineJoin
                        }, is.lineJoin.set = function (t) {
                            this._lineJoin !== t && (this._lineJoin = t, this.styleID++)
                        }, is.miterLimit.get = function () {
                            return this._miterLimit
                        }, is.miterLimit.set = function (t) {
                            this._miterLimit !== t && (this._miterLimit = t, this.styleID++)
                        }, is.padding.get = function () {
                            return this._padding
                        }, is.padding.set = function (t) {
                            this._padding !== t && (this._padding = t, this.styleID++)
                        }, is.stroke.get = function () {
                            return this._stroke
                        }, is.stroke.set = function (t) {
                            var e = os(t);
                            this._stroke !== e && (this._stroke = e, this.styleID++)
                        }, is.strokeThickness.get = function () {
                            return this._strokeThickness
                        }, is.strokeThickness.set = function (t) {
                            this._strokeThickness !== t && (this._strokeThickness = t, this.styleID++)
                        }, is.textBaseline.get = function () {
                            return this._textBaseline
                        }, is.textBaseline.set = function (t) {
                            this._textBaseline !== t && (this._textBaseline = t, this.styleID++)
                        }, is.trim.get = function () {
                            return this._trim
                        }, is.trim.set = function (t) {
                            this._trim !== t && (this._trim = t, this.styleID++)
                        }, is.whiteSpace.get = function () {
                            return this._whiteSpace
                        }, is.whiteSpace.set = function (t) {
                            this._whiteSpace !== t && (this._whiteSpace = t, this.styleID++)
                        }, is.wordWrap.get = function () {
                            return this._wordWrap
                        }, is.wordWrap.set = function (t) {
                            this._wordWrap !== t && (this._wordWrap = t, this.styleID++)
                        }, is.wordWrapWidth.get = function () {
                            return this._wordWrapWidth
                        }, is.wordWrapWidth.set = function (t) {
                            this._wordWrapWidth !== t && (this._wordWrapWidth = t, this.styleID++)
                        }, rs.prototype.toFontString = function () {
                            var t = "number" == typeof this.fontSize ? this.fontSize + "px" : this.fontSize,
                                e = this.fontFamily;
                            Array.isArray(this.fontFamily) || (e = this.fontFamily.split(","));
                            for (var r = e.length - 1; r >= 0; r--) {
                                var i = e[r].trim();
                                !/([\"\'])[^\'\"]+\1/.test(i) && es.indexOf(i) < 0 && (i = '"' + i + '"'), e[r] = i
                            }
                            return this.fontStyle + " " + this.fontVariant + " " + this.fontWeight + " " + t + " " + e.join(",")
                        }, Object.defineProperties(rs.prototype, is);
                        var as = function (t, e, r, i, n, o, s, a, h) {
                            this.text = t, this.style = e, this.width = r, this.height = i, this.lines = n, this.lineWidths = o, this.lineHeight = s, this.maxLineWidth = a, this.fontProperties = h
                        };
                        as.measureText = function (t, e, r, i) {
                            void 0 === i && (i = as._canvas), r = null == r ? e.wordWrap : r;
                            var n = e.toFontString(),
                                o = as.measureFont(n);
                            0 === o.fontSize && (o.fontSize = e.fontSize, o.ascent = e.fontSize);
                            var s = i.getContext("2d");
                            s.font = n;
                            for (var a = (r ? as.wordWrap(t, e, i) : t).split(/(?:\r\n|\r|\n)/), h = new Array(a.length), u = 0, l = 0; l < a.length; l++) {
                                var c = s.measureText(a[l]).width + (a[l].length - 1) * e.letterSpacing;
                                h[l] = c, u = Math.max(u, c)
                            }
                            var d = u + e.strokeThickness;
                            e.dropShadow && (d += e.dropShadowDistance);
                            var p = e.lineHeight || o.fontSize + e.strokeThickness,
                                f = Math.max(p, o.fontSize + e.strokeThickness) + (a.length - 1) * (p + e.leading);
                            return e.dropShadow && (f += e.dropShadowDistance), new as(t, e, d, f, a, h, p + e.leading, u, o)
                        }, as.wordWrap = function (t, e, r) {
                            void 0 === r && (r = as._canvas);
                            for (var i = r.getContext("2d"), n = 0, o = "", s = "", a = {}, h = e.letterSpacing, u = e.whiteSpace, l = as.collapseSpaces(u), c = as.collapseNewlines(u), d = !l, p = e.wordWrapWidth + h, f = as.tokenize(t), m = 0; m < f.length; m++) {
                                var g = f[m];
                                if (as.isNewline(g)) {
                                    if (!c) {
                                        s += as.addLine(o), d = !l, o = "", n = 0;
                                        continue
                                    }
                                    g = " "
                                }
                                if (l) {
                                    var v = as.isBreakingSpace(g),
                                        y = as.isBreakingSpace(o[o.length - 1]);
                                    if (v && y) continue
                                }
                                var _ = as.getFromCache(g, h, a, i);
                                if (_ > p)
                                    if ("" !== o && (s += as.addLine(o), o = "", n = 0), as.canBreakWords(g, e.breakWords))
                                        for (var x = as.wordWrapSplit(g), b = 0; b < x.length; b++) {
                                            for (var E = x[b], T = 1; x[b + T];) {
                                                var w = x[b + T],
                                                    S = E[E.length - 1];
                                                if (as.canBreakChars(S, w, g, b, e.breakWords)) break;
                                                E += w, T++
                                            }
                                            b += E.length - 1;
                                            var I = as.getFromCache(E, h, a, i);
                                            I + n > p && (s += as.addLine(o), d = !1, o = "", n = 0), o += E, n += I
                                        } else {
                                            o.length > 0 && (s += as.addLine(o), o = "", n = 0);
                                            var P = m === f.length - 1;
                                            s += as.addLine(g, !P), d = !1, o = "", n = 0
                                        } else _ + n > p && (d = !1, s += as.addLine(o), o = "", n = 0), (o.length > 0 || !as.isBreakingSpace(g) || d) && (o += g, n += _)
                            }
                            return s += as.addLine(o, !1)
                        }, as.addLine = function (t, e) {
                            return void 0 === e && (e = !0), t = as.trimRight(t), t = e ? t + "\n" : t
                        }, as.getFromCache = function (t, e, r, i) {
                            var n = r[t];
                            if (void 0 === n) {
                                var o = t.length * e;
                                n = i.measureText(t).width + o, r[t] = n
                            }
                            return n
                        }, as.collapseSpaces = function (t) {
                            return "normal" === t || "pre-line" === t
                        }, as.collapseNewlines = function (t) {
                            return "normal" === t
                        }, as.trimRight = function (t) {
                            if ("string" != typeof t) return "";
                            for (var e = t.length - 1; e >= 0; e--) {
                                var r = t[e];
                                if (!as.isBreakingSpace(r)) break;
                                t = t.slice(0, -1)
                            }
                            return t
                        }, as.isNewline = function (t) {
                            return "string" == typeof t && as._newlines.indexOf(t.charCodeAt(0)) >= 0
                        }, as.isBreakingSpace = function (t) {
                            return "string" == typeof t && as._breakingSpaces.indexOf(t.charCodeAt(0)) >= 0
                        }, as.tokenize = function (t) {
                            var e = [],
                                r = "";
                            if ("string" != typeof t) return e;
                            for (var i = 0; i < t.length; i++) {
                                var n = t[i];
                                as.isBreakingSpace(n) || as.isNewline(n) ? ("" !== r && (e.push(r), r = ""), e.push(n)) : r += n
                            }
                            return "" !== r && e.push(r), e
                        }, as.canBreakWords = function (t, e) {
                            return e
                        }, as.canBreakChars = function (t, e, r, i, n) {
                            return !0
                        }, as.wordWrapSplit = function (t) {
                            return t.split("")
                        }, as.measureFont = function (t) {
                            if (as._fonts[t]) return as._fonts[t];
                            var e = {},
                                r = as._canvas,
                                i = as._context;
                            i.font = t;
                            var n = as.METRICS_STRING + as.BASELINE_SYMBOL,
                                o = Math.ceil(i.measureText(n).width),
                                s = Math.ceil(i.measureText(as.BASELINE_SYMBOL).width),
                                a = 2 * s;
                            s = s * as.BASELINE_MULTIPLIER | 0, r.width = o, r.height = a, i.fillStyle = "#f00", i.fillRect(0, 0, o, a), i.font = t, i.textBaseline = "alphabetic", i.fillStyle = "#000", i.fillText(n, 0, s);
                            var h = i.getImageData(0, 0, o, a).data,
                                u = h.length,
                                l = 4 * o,
                                c = 0,
                                d = 0,
                                p = !1;
                            for (c = 0; c < s; ++c) {
                                for (var f = 0; f < l; f += 4)
                                    if (255 !== h[d + f]) {
                                        p = !0;
                                        break
                                    } if (p) break;
                                d += l
                            }
                            for (e.ascent = s - c, d = u - l, p = !1, c = a; c > s; --c) {
                                for (var m = 0; m < l; m += 4)
                                    if (255 !== h[d + m]) {
                                        p = !0;
                                        break
                                    } if (p) break;
                                d -= l
                            }
                            return e.descent = c - s, e.fontSize = e.ascent + e.descent, as._fonts[t] = e, e
                        }, as.clearMetrics = function (t) {
                            void 0 === t && (t = ""), t ? delete as._fonts[t] : as._fonts = {}
                        };
                        var hs = v.createElement("canvas2dText");
                        hs.width = hs.height = 10, as._canvas = hs, as._context = hs.getContext("2d"), as._fonts = {}, as.METRICS_STRING = "|ÉqÅ", as.BASELINE_SYMBOL = "M", as.BASELINE_MULTIPLIER = 1.4, as._newlines = [10, 13], as._breakingSpaces = [9, 32, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8200, 8201, 8202, 8287, 12288];
                        var us = {
                                texture: !0,
                                children: !1,
                                baseTexture: !0
                            },
                            ls = function (t) {
                                function e(e, r, i) {
                                    (i = i || v.createElement("canvas2dText")).width = 3, i.height = 3;
                                    var n = i.getContext("2d").getImageData(0, 0, i.width, i.height),
                                        o = ii.fromBuffer(new Uint8Array(n.data), i.width, i.height);
                                    o.orig = new ar, o.trim = new ar, t.call(this, o), this.canvas = i, this.context = this.canvas.getContext("2d"), this._resolution = V.RESOLUTION, this._autoResolution = !0, this._text = null, this._style = null, this._styleListener = null, this._font = "", this.text = e, this.style = r, this.localStyleID = -1
                                }
                                t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
                                var r = {
                                    width: {
                                        configurable: !0
                                    },
                                    height: {
                                        configurable: !0
                                    },
                                    style: {
                                        configurable: !0
                                    },
                                    text: {
                                        configurable: !0
                                    },
                                    resolution: {
                                        configurable: !0
                                    }
                                };
                                return e.prototype.updateText = function (t) {
                                    var e = this._style;
                                    if (this.localStyleID !== e.styleID && (this.dirty = !0, this.localStyleID = e.styleID), this.dirty || !t) {
                                        this._font = this._style.toFontString();
                                        var r, i, n = this.context,
                                            o = as.measureText(this._text || " ", this._style, this._style.wordWrap, this.canvas),
                                            s = o.width,
                                            a = o.height,
                                            h = o.lines,
                                            u = o.lineHeight,
                                            l = o.lineWidths,
                                            c = o.maxLineWidth,
                                            d = o.fontProperties;
                                        this.canvas.width = Math.ceil((Math.max(1, s) + 2 * e.padding) * this._resolution), this.canvas.height = Math.ceil((Math.max(1, a) + 2 * e.padding) * this._resolution), n.scale(this._resolution, this._resolution), n.clearRect(0, 0, this.canvas.width, this.canvas.height), n.font = this._font, n.lineWidth = e.strokeThickness, n.textBaseline = e.textBaseline, n.lineJoin = e.lineJoin, n.miterLimit = e.miterLimit;
                                        for (var p = e.dropShadow ? 2 : 1, f = 0; f < p; ++f) {
                                            var m = e.dropShadow && 0 === f,
                                                g = m ? 2 * a : 0,
                                                v = g * this.resolution;
                                            if (m) {
                                                n.fillStyle = "black", n.strokeStyle = "black";
                                                var y = e.dropShadowColor,
                                                    _ = me("number" == typeof y ? y : ve(y));
                                                n.shadowColor = "rgba(" + 255 * _[0] + "," + 255 * _[1] + "," + 255 * _[2] + "," + e.dropShadowAlpha + ")", n.shadowBlur = e.dropShadowBlur, n.shadowOffsetX = Math.cos(e.dropShadowAngle) * e.dropShadowDistance, n.shadowOffsetY = Math.sin(e.dropShadowAngle) * e.dropShadowDistance + v
                                            } else n.fillStyle = this._generateFillStyle(e, h), n.strokeStyle = e.stroke, n.shadowColor = 0, n.shadowBlur = 0, n.shadowOffsetX = 0, n.shadowOffsetY = 0;
                                            for (var x = 0; x < h.length; x++) r = e.strokeThickness / 2, i = e.strokeThickness / 2 + x * u + d.ascent, "right" === e.align ? r += c - l[x] : "center" === e.align && (r += (c - l[x]) / 2), e.stroke && e.strokeThickness && this.drawLetterSpacing(h[x], r + e.padding, i + e.padding - g, !0), e.fill && this.drawLetterSpacing(h[x], r + e.padding, i + e.padding - g)
                                        }
                                        this.updateTexture()
                                    }
                                }, e.prototype.drawLetterSpacing = function (t, e, r, i) {
                                    void 0 === i && (i = !1);
                                    var n = this._style.letterSpacing;
                                    if (0 !== n)
                                        for (var o = e, s = Array.from ? Array.from(t) : t.split(""), a = this.context.measureText(t).width, h = 0, u = 0; u < s.length; ++u) {
                                            var l = s[u];
                                            i ? this.context.strokeText(l, o, r) : this.context.fillText(l, o, r), o += a - (h = this.context.measureText(t.substring(u + 1)).width) + n, a = h
                                        } else i ? this.context.strokeText(t, e, r) : this.context.fillText(t, e, r)
                                }, e.prototype.updateTexture = function () {
                                    this.dirty = !1;
                                    var t = this.canvas;
                                    if (this._style.trim) {
                                        var e = ke(t);
                                        e.data && (t.width = e.width, t.height = e.height, this.context.putImageData(e.data, 0, 0))
                                    }
                                    var r = this._texture,
                                        i = this._style,
                                        n = i.trim ? 0 : i.padding,
                                        o = r.baseTexture;
                                    r.trim.width = r._frame.width = Math.ceil(t.width / this._resolution), r.trim.height = r._frame.height = Math.ceil(t.height / this._resolution), r.trim.x = -n, r.trim.y = -n, r.baseTexture.width = r.trim.width, r.baseTexture.height = r.trim.height, r.baseTexture.resource.data = new Uint8Array(this.context.getImageData(0, 0, t.width, t.height).data), r.orig.width = r._frame.width - 2 * n, r.orig.height = r._frame.height - 2 * n, this._onTextureUpdate(), o.setRealSize(t.width, t.height, this._resolution), this.dirty = !1
                                }, e.prototype._render = function (e) {
                                    this._autoResolution && this._resolution !== e.resolution && (this._resolution = e.resolution, this.dirty = !0), this.updateText(!0), t.prototype._render.call(this, e)
                                }, e.prototype.getLocalBounds = function (e) {
                                    return this.updateText(!0), t.prototype.getLocalBounds.call(this, e)
                                }, e.prototype._calculateBounds = function () {
                                    this.updateText(!0), this.calculateVertices(), this._bounds.addQuad(this.vertexData)
                                }, e.prototype._onStyleChange = function () {
                                    this.dirty = !0
                                }, e.prototype._generateFillStyle = function (t, e) {
                                    if (!Array.isArray(t.fill)) return t.fill;
                                    if (1 === t.fill.length) return t.fill[0];
                                    var r, i, n, o, s = t.dropShadow ? t.dropShadowDistance : 0,
                                        a = Math.ceil(this.canvas.width / this._resolution) - s,
                                        h = Math.ceil(this.canvas.height / this._resolution) - s,
                                        u = t.fill.slice(),
                                        l = t.fillGradientStops.slice();
                                    if (!l.length)
                                        for (var c = u.length + 1, d = 1; d < c; ++d) l.push(d / c);
                                    if (u.unshift(t.fill[0]), l.unshift(0), u.push(t.fill[t.fill.length - 1]), l.push(1), t.fillGradientType === Qo.LINEAR_VERTICAL) {
                                        r = this.context.createLinearGradient(a / 2, 0, a / 2, h), i = (u.length + 1) * e.length, n = 0;
                                        for (var p = 0; p < e.length; p++) {
                                            n += 1;
                                            for (var f = 0; f < u.length; f++) o = "number" == typeof l[f] ? l[f] / e.length + p / e.length : n / i, r.addColorStop(o, u[f]), n++
                                        }
                                    } else {
                                        r = this.context.createLinearGradient(0, h / 2, a, h / 2), i = u.length + 1, n = 1;
                                        for (var m = 0; m < u.length; m++) o = "number" == typeof l[m] ? l[m] : n / i, r.addColorStop(o, u[m]), n++
                                    }
                                    return r
                                }, e.prototype.destroy = function (e) {
                                    "boolean" == typeof e && (e = {
                                        children: e
                                    }), e = Object.assign({}, us, e), t.prototype.destroy.call(this, e), this.context = null, this.canvas = null, this._style = null
                                }, r.width.get = function () {
                                    return this.updateText(!0), Math.abs(this.scale.x) * this._texture.orig.width
                                }, r.width.set = function (t) {
                                    this.updateText(!0);
                                    var e = De(this.scale.x) || 1;
                                    this.scale.x = e * t / this._texture.orig.width, this._width = t
                                }, r.height.get = function () {
                                    return this.updateText(!0), Math.abs(this.scale.y) * this._texture.orig.height
                                }, r.height.set = function (t) {
                                    this.updateText(!0);
                                    var e = De(this.scale.y) || 1;
                                    this.scale.y = e * t / this._texture.orig.height, this._height = t
                                }, r.style.get = function () {
                                    return this._style
                                }, r.style.set = function (t) {
                                    t = t || {}, this._style = t instanceof rs ? t : new rs(t), this.localStyleID = -1, this.dirty = !0
                                }, r.text.get = function () {
                                    return this._text
                                }, r.text.set = function (t) {
                                    t = String(null == t ? "" : t), this._text !== t && (this._text = t, this.dirty = !0)
                                }, r.resolution.get = function () {
                                    return this._resolution
                                }, r.resolution.set = function (t) {
                                    this._autoResolution = !1, this._resolution !== t && (this._resolution = t, this.dirty = !0)
                                }, Object.defineProperties(e.prototype, r), e
                            }(Jo);
                        /*!
                         * @pixi/prepare - v5.2.1
                         * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                         *
                         * @pixi/prepare is licensed under the MIT License.
                         * http://www.opensource.org/licenses/mit-license
                         */
                        V.UPLOADS_PER_FRAME = 4;
                        var cs = function (t) {
                            this.maxItemsPerFrame = t, this.itemsLeft = 0
                        };
                        cs.prototype.beginFrame = function () {
                            this.itemsLeft = this.maxItemsPerFrame
                        }, cs.prototype.allowedToUpload = function () {
                            return this.itemsLeft-- > 0
                        };
                        var ds = function (t) {
                            var e = this;
                            this.limiter = new cs(V.UPLOADS_PER_FRAME), this.renderer = t, this.uploadHookHelper = null, this.queue = [], this.addHooks = [], this.uploadHooks = [], this.completes = [], this.ticking = !1, this.delayedTick = function () {
                                e.queue && e.prepareItems()
                            }, this.registerFindHook(ys), this.registerFindHook(_s), this.registerFindHook(ps), this.registerFindHook(fs), this.registerFindHook(ms), this.registerUploadHook(gs), this.registerUploadHook(vs)
                        };

                        function ps(t, e) {
                            var r = !1;
                            if (t && t._textures && t._textures.length)
                                for (var i = 0; i < t._textures.length; i++)
                                    if (t._textures[i] instanceof ii) {
                                        var n = t._textures[i].baseTexture; - 1 === e.indexOf(n) && (e.push(n), r = !0)
                                    } return r
                        }

                        function fs(t, e) {
                            if (t.baseTexture instanceof Hr) {
                                var r = t.baseTexture;
                                return -1 === e.indexOf(r) && e.push(r), !0
                            }
                            return !1
                        }

                        function ms(t, e) {
                            if (t._texture && t._texture instanceof ii) {
                                var r = t._texture.baseTexture;
                                return -1 === e.indexOf(r) && e.push(r), !0
                            }
                            return !1
                        }

                        function gs(t, e) {
                            return e instanceof ls && (e.updateText(!0), !0)
                        }

                        function vs(t, e) {
                            if (e instanceof rs) {
                                var r = e.toFontString();
                                return as.measureFont(r), !0
                            }
                            return !1
                        }

                        function ys(t, e) {
                            if (t instanceof ls) {
                                -1 === e.indexOf(t.style) && e.push(t.style), -1 === e.indexOf(t) && e.push(t);
                                var r = t._texture.baseTexture;
                                return -1 === e.indexOf(r) && e.push(r), !0
                            }
                            return !1
                        }

                        function _s(t, e) {
                            return t instanceof rs && (-1 === e.indexOf(t) && e.push(t), !0)
                        }
                        ds.prototype.upload = function (t, r) {
                            "function" == typeof t && (r = t, t = null), t && this.add(t), this.queue.length ? (r && this.completes.push(r), this.ticking || (this.ticking = !0, br.system.addOnce(this.tick, this, e.UPDATE_PRIORITY.UTILITY))) : r && r()
                        }, ds.prototype.tick = function () {
                            setTimeout(this.delayedTick, 0)
                        }, ds.prototype.prepareItems = function () {
                            for (this.limiter.beginFrame(); this.queue.length && this.limiter.allowedToUpload();) {
                                var t = this.queue[0],
                                    r = !1;
                                if (t && !t._destroyed)
                                    for (var i = 0, n = this.uploadHooks.length; i < n; i++)
                                        if (this.uploadHooks[i](this.uploadHookHelper, t)) {
                                            this.queue.shift(), r = !0;
                                            break
                                        } r || this.queue.shift()
                            }
                            if (this.queue.length) br.system.addOnce(this.tick, this, e.UPDATE_PRIORITY.UTILITY);
                            else {
                                this.ticking = !1;
                                var o = this.completes.slice(0);
                                this.completes.length = 0;
                                for (var s = 0, a = o.length; s < a; s++) o[s]()
                            }
                        }, ds.prototype.registerFindHook = function (t) {
                            return t && this.addHooks.push(t), this
                        }, ds.prototype.registerUploadHook = function (t) {
                            return t && this.uploadHooks.push(t), this
                        }, ds.prototype.add = function (t) {
                            for (var e = 0, r = this.addHooks.length; e < r && !this.addHooks[e](t, this.queue); e++);
                            if (t instanceof mr)
                                for (var i = t.children.length - 1; i >= 0; i--) this.add(t.children[i]);
                            return this
                        }, ds.prototype.destroy = function () {
                            this.ticking && br.system.remove(this.tick, this), this.ticking = !1, this.addHooks = null, this.uploadHooks = null, this.renderer = null, this.completes = null, this.queue = null, this.limiter = null, this.uploadHookHelper = null
                        };
                        var xs = function (t) {
                            function e(e) {
                                t.call(this, e), this.uploadHookHelper = this.renderer, this.registerFindHook(Ts), this.registerUploadHook(bs), this.registerUploadHook(Es)
                            }
                            return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e
                        }(ds);

                        function bs(t, e) {
                            return e instanceof Hr && (e._glTextures[t.CONTEXT_UID] || t.texture.bind(e), !0)
                        }

                        function Es(t, e) {
                            if (!(e instanceof Ko)) return !1;
                            var r = e.geometry;
                            e.finishPoly(), r.updateBatches();
                            for (var i = r.batches, n = 0; n < i.length; n++) {
                                var o = i[n].style.texture;
                                o && bs(t, o.baseTexture)
                            }
                            return r.batchable || t.geometry.bind(r, e._resolveDirectShader()), !0
                        }

                        function Ts(t, e) {
                            return t instanceof Ko && (e.push(t), !0)
                        }
                        var ws = function (t) {
                            this.maxMilliseconds = t, this.frameStart = 0
                        };
                        ws.prototype.beginFrame = function () {
                            this.frameStart = Date.now()
                        }, ws.prototype.allowedToUpload = function () {
                            return Date.now() - this.frameStart < this.maxMilliseconds
                        };
                        /*!
                         * @pixi/spritesheet - v5.2.1
                         * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                         *
                         * @pixi/spritesheet is licensed under the MIT License.
                         * http://www.opensource.org/licenses/mit-license
                         */
                        var Ss = function (t, e, r) {
                                void 0 === r && (r = null), this.baseTexture = t, this.textures = {}, this.animations = {}, this.data = e, this.resolution = this._updateResolution(r || (this.baseTexture.resource ? this.baseTexture.resource.url : null)), this._frames = this.data.frames, this._frameKeys = Object.keys(this._frames), this._batchIndex = 0, this._callback = null
                            },
                            Is = {
                                BATCH_SIZE: {
                                    configurable: !0
                                }
                            };
                        Is.BATCH_SIZE.get = function () {
                            return 1e3
                        }, Ss.prototype._updateResolution = function (t) {
                            var e = this.data.meta.scale,
                                r = Ge(t, null);
                            return null === r && (r = void 0 !== e ? parseFloat(e) : 1), 1 !== r && this.baseTexture.setResolution(r), r
                        }, Ss.prototype.parse = function (t) {
                            this._batchIndex = 0, this._callback = t, this._frameKeys.length <= Ss.BATCH_SIZE ? (this._processFrames(0), this._processAnimations(), this._parseComplete()) : this._nextBatch()
                        }, Ss.prototype._processFrames = function (t) {
                            for (var e = t, r = Ss.BATCH_SIZE; e - t < r && e < this._frameKeys.length;) {
                                var i = this._frameKeys[e],
                                    n = this._frames[i],
                                    o = n.frame;
                                if (o) {
                                    var s = null,
                                        a = null,
                                        h = !1 !== n.trimmed && n.sourceSize ? n.sourceSize : n.frame,
                                        u = new ar(0, 0, Math.floor(h.w) / this.resolution, Math.floor(h.h) / this.resolution);
                                    s = n.rotated ? new ar(Math.floor(o.x) / this.resolution, Math.floor(o.y) / this.resolution, Math.floor(o.h) / this.resolution, Math.floor(o.w) / this.resolution) : new ar(Math.floor(o.x) / this.resolution, Math.floor(o.y) / this.resolution, Math.floor(o.w) / this.resolution, Math.floor(o.h) / this.resolution), !1 !== n.trimmed && n.spriteSourceSize && (a = new ar(Math.floor(n.spriteSourceSize.x) / this.resolution, Math.floor(n.spriteSourceSize.y) / this.resolution, Math.floor(o.w) / this.resolution, Math.floor(o.h) / this.resolution)), this.textures[i] = new ii(this.baseTexture, s, u, a, n.rotated ? 2 : 0, n.anchor), ii.addToCache(this.textures[i], i)
                                }
                                e++
                            }
                        }, Ss.prototype._processAnimations = function () {
                            var t = this.data.animations || {};
                            for (var e in t) {
                                this.animations[e] = [];
                                for (var r = 0; r < t[e].length; r++) {
                                    var i = t[e][r];
                                    this.animations[e].push(this.textures[i])
                                }
                            }
                        }, Ss.prototype._parseComplete = function () {
                            var t = this._callback;
                            this._callback = null, this._batchIndex = 0, t.call(this, this.textures)
                        }, Ss.prototype._nextBatch = function () {
                            var t = this;
                            this._processFrames(this._batchIndex * Ss.BATCH_SIZE), this._batchIndex++, setTimeout((function () {
                                t._batchIndex * Ss.BATCH_SIZE < t._frameKeys.length ? t._nextBatch() : (t._processAnimations(), t._parseComplete())
                            }), 0)
                        }, Ss.prototype.destroy = function (t) {
                            for (var e in void 0 === t && (t = !1), this.textures) this.textures[e].destroy();
                            this._frames = null, this._frameKeys = null, this.data = null, this.textures = null, t && this.baseTexture.destroy(), this.baseTexture = null
                        }, Object.defineProperties(Ss, Is);
                        var Ps = function () {};
                        Ps.use = function (t, e) {
                            var r = t.name + "_image";
                            if (t.data && t.type === xo.TYPE.JSON && t.data.frames && !this.resources[r]) {
                                var i = {
                                        crossOrigin: t.crossOrigin,
                                        metadata: t.metadata.imageMetadata,
                                        parentResource: t
                                    },
                                    n = Ps.getResourcePath(t, this.baseUrl);
                                this.add(r, n, i, (function (r) {
                                    if (r.error) e(r.error);
                                    else {
                                        var i = new Ss(r.texture.baseTexture, t.data, t.url);
                                        i.parse((function () {
                                            t.spritesheet = i, t.textures = i.textures, e()
                                        }))
                                    }
                                }))
                            } else e()
                        }, Ps.getResourcePath = function (t, e) {
                            return t.isDataUrl ? t.data.meta.image : ce.resolve(t.url.replace(e, ""), t.data.meta.image)
                        };
                        /*!
                         * @pixi/sprite-tiling - v5.2.1
                         * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                         *
                         * @pixi/sprite-tiling is licensed under the MIT License.
                         * http://www.opensource.org/licenses/mit-license
                         */
                        var As = new Ve,
                            Os = function (t) {
                                function e(e, r, i) {
                                    void 0 === r && (r = 100), void 0 === i && (i = 100), t.call(this, e), this.tileTransform = new sr, this._width = r, this._height = i, this._canvasPattern = null, this.uvMatrix = e.uvMatrix || new hn(e), this.pluginName = "tilingSprite", this.uvRespectAnchor = !1
                                }
                                t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
                                var r = {
                                    clampMargin: {
                                        configurable: !0
                                    },
                                    tileScale: {
                                        configurable: !0
                                    },
                                    tilePosition: {
                                        configurable: !0
                                    },
                                    width: {
                                        configurable: !0
                                    },
                                    height: {
                                        configurable: !0
                                    }
                                };
                                return r.clampMargin.get = function () {
                                    return this.uvMatrix.clampMargin
                                }, r.clampMargin.set = function (t) {
                                    this.uvMatrix.clampMargin = t, this.uvMatrix.update(!0)
                                }, r.tileScale.get = function () {
                                    return this.tileTransform.scale
                                }, r.tileScale.set = function (t) {
                                    this.tileTransform.scale.copyFrom(t)
                                }, r.tilePosition.get = function () {
                                    return this.tileTransform.position
                                }, r.tilePosition.set = function (t) {
                                    this.tileTransform.position.copyFrom(t)
                                }, e.prototype._onTextureUpdate = function () {
                                    this.uvMatrix && (this.uvMatrix.texture = this._texture), this._cachedTint = 16777215
                                }, e.prototype._render = function (t) {
                                    var e = this._texture;
                                    e && e.valid && (this.tileTransform.updateLocalTransform(), this.uvMatrix.update(), t.batch.setObjectRenderer(t.plugins[this.pluginName]), t.plugins[this.pluginName].render(this))
                                }, e.prototype._calculateBounds = function () {
                                    var t = this._width * -this._anchor._x,
                                        e = this._height * -this._anchor._y,
                                        r = this._width * (1 - this._anchor._x),
                                        i = this._height * (1 - this._anchor._y);
                                    this._bounds.addFrame(this.transform, t, e, r, i)
                                }, e.prototype.getLocalBounds = function (e) {
                                    return 0 === this.children.length ? (this._bounds.minX = this._width * -this._anchor._x, this._bounds.minY = this._height * -this._anchor._y, this._bounds.maxX = this._width * (1 - this._anchor._x), this._bounds.maxY = this._height * (1 - this._anchor._y), e || (this._localBoundsRect || (this._localBoundsRect = new ar), e = this._localBoundsRect), this._bounds.getRectangle(e)) : t.prototype.getLocalBounds.call(this, e)
                                }, e.prototype.containsPoint = function (t) {
                                    this.worldTransform.applyInverse(t, As);
                                    var e = this._width,
                                        r = this._height,
                                        i = -e * this.anchor._x;
                                    if (As.x >= i && As.x < i + e) {
                                        var n = -r * this.anchor._y;
                                        if (As.y >= n && As.y < n + r) return !0
                                    }
                                    return !1
                                }, e.prototype.destroy = function (e) {
                                    t.prototype.destroy.call(this, e), this.tileTransform = null, this.uvMatrix = null
                                }, e.from = function (t, r, i) {
                                    return new e(ii.from(t), r, i)
                                }, e.fromFrame = function (t, r, i) {
                                    var n = Fe[t];
                                    if (!n) throw new Error('The frameId "' + t + '" does not exist in the texture cache ' + this);
                                    return new e(n, r, i)
                                }, e.fromImage = function (t, r, i, n) {
                                    return n && "object" !== a(n) && (n = {
                                        scaleMode: arguments[4],
                                        resourceOptions: {
                                            crossorigin: arguments[3]
                                        }
                                    }), new e(ii.from(t, n), r, i)
                                }, r.width.get = function () {
                                    return this._width
                                }, r.width.set = function (t) {
                                    this._width = t
                                }, r.height.get = function () {
                                    return this._height
                                }, r.height.set = function (t) {
                                    this._height = t
                                }, Object.defineProperties(e.prototype, r), e
                            }(Jo),
                            Ds = "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n    gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n    vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n",
                            Cs = new $e,
                            Ms = function (t) {
                                function r(e) {
                                    t.call(this, e);
                                    var r = {
                                        globals: this.renderer.globalUniforms
                                    };
                                    this.shader = en.from(Ds, "varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\nuniform mat3 uMapCoord;\nuniform vec4 uClampFrame;\nuniform vec2 uClampOffset;\n\nvoid main(void)\n{\n    vec2 coord = vTextureCoord - floor(vTextureCoord - uClampOffset);\n    coord = (uMapCoord * vec3(coord, 1.0)).xy;\n    coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n\n    vec4 texSample = texture2D(uSampler, coord);\n    gl_FragColor = texSample * uColor;\n}\n", r), this.simpleShader = en.from(Ds, "varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\n\nvoid main(void)\n{\n    vec4 sample = texture2D(uSampler, vTextureCoord);\n    gl_FragColor = sample * uColor;\n}\n", r), this.quad = new vi, this.state = nn.for2d()
                                }
                                return t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r, r.prototype.render = function (t) {
                                    var r = this.renderer,
                                        i = this.quad,
                                        n = i.vertices;
                                    n[0] = n[6] = t._width * -t.anchor.x, n[1] = n[3] = t._height * -t.anchor.y, n[2] = n[4] = t._width * (1 - t.anchor.x), n[5] = n[7] = t._height * (1 - t.anchor.y), t.uvRespectAnchor && ((n = i.uvs)[0] = n[6] = -t.anchor.x, n[1] = n[3] = -t.anchor.y, n[2] = n[4] = 1 - t.anchor.x, n[5] = n[7] = 1 - t.anchor.y), i.invalidate();
                                    var o = t._texture,
                                        s = o.baseTexture,
                                        a = t.tileTransform.localTransform,
                                        h = t.uvMatrix,
                                        u = s.isPowerOfTwo && o.frame.width === s.width && o.frame.height === s.height;
                                    u && (s._glTextures[r.CONTEXT_UID] ? u = s.wrapMode !== e.WRAP_MODES.CLAMP : s.wrapMode === e.WRAP_MODES.CLAMP && (s.wrapMode = e.WRAP_MODES.REPEAT));
                                    var l = u ? this.simpleShader : this.shader,
                                        c = o.width,
                                        d = o.height,
                                        p = t._width,
                                        f = t._height;
                                    Cs.set(a.a * c / p, a.b * c / f, a.c * d / p, a.d * d / f, a.tx / p, a.ty / f), Cs.invert(), u ? Cs.prepend(h.mapCoord) : (l.uniforms.uMapCoord = h.mapCoord.toArray(!0), l.uniforms.uClampFrame = h.uClampFrame, l.uniforms.uClampOffset = h.uClampOffset), l.uniforms.uTransform = Cs.toArray(!0), l.uniforms.uColor = Ee(t.tint, t.worldAlpha, l.uniforms.uColor, s.alphaMode), l.uniforms.translationMatrix = t.transform.worldTransform.toArray(!0), l.uniforms.uSampler = o, r.shader.bind(l), r.geometry.bind(i), this.state.blendMode = _e(t.blendMode, s.alphaMode), r.state.set(this.state), r.geometry.draw(this.renderer.gl.TRIANGLES, 6, 0)
                                }, r
                            }(Ei),
                            Rs = function (t) {
                                function e(e, r) {
                                    var i = this;
                                    void 0 === r && (r = {}), t.call(this), this._textWidth = 0, this._textHeight = 0, this._glyphs = [], this._font = {
                                        tint: void 0 !== r.tint ? r.tint : 16777215,
                                        align: r.align || "left",
                                        name: null,
                                        size: 0
                                    }, this.font = r.font, this._text = e, this._maxWidth = 0, this._maxLineHeight = 0, this._letterSpacing = 0, this._anchor = new We((function () {
                                        i.dirty = !0
                                    }), this, 0, 0), this.dirty = !1, this.roundPixels = V.ROUND_PIXELS, this.updateText()
                                }
                                t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
                                var r = {
                                    tint: {
                                        configurable: !0
                                    },
                                    align: {
                                        configurable: !0
                                    },
                                    anchor: {
                                        configurable: !0
                                    },
                                    font: {
                                        configurable: !0
                                    },
                                    text: {
                                        configurable: !0
                                    },
                                    maxWidth: {
                                        configurable: !0
                                    },
                                    maxLineHeight: {
                                        configurable: !0
                                    },
                                    textWidth: {
                                        configurable: !0
                                    },
                                    letterSpacing: {
                                        configurable: !0
                                    },
                                    textHeight: {
                                        configurable: !0
                                    }
                                };
                                return e.prototype.updateText = function () {
                                    for (var t = e.fonts[this._font.name], r = this._font.size / t.size, i = new Ve, n = [], o = [], s = this._text.replace(/(?:\r\n|\r)/g, "\n") || " ", a = s.length, h = this._maxWidth * t.size / this._font.size, u = null, l = 0, c = 0, d = 0, p = -1, f = 0, m = 0, g = 0, v = 0; v < a; v++) {
                                        var y = s.charCodeAt(v),
                                            _ = s.charAt(v);
                                        if (/(?:\s)/.test(_) && (p = v, f = l), "\r" !== _ && "\n" !== _) {
                                            var x = t.chars[y];
                                            x && (u && x.kerning[u] && (i.x += x.kerning[u]), n.push({
                                                texture: x.texture,
                                                line: d,
                                                charCode: y,
                                                position: new Ve(i.x + x.xOffset + this._letterSpacing / 2, i.y + x.yOffset)
                                            }), i.x += x.xAdvance + this._letterSpacing, l = i.x, g = Math.max(g, x.yOffset + x.texture.height), u = y, -1 !== p && h > 0 && i.x > h && (Oe(n, 1 + p - ++m, 1 + v - p), v = p, p = -1, o.push(f), c = Math.max(c, f), d++, i.x = 0, i.y += t.lineHeight, u = null))
                                        } else o.push(l), c = Math.max(c, l), ++d, ++m, i.x = 0, i.y += t.lineHeight, u = null
                                    }
                                    var b = s.charAt(s.length - 1);
                                    "\r" !== b && "\n" !== b && (/(?:\s)/.test(b) && (l = f), o.push(l), c = Math.max(c, l));
                                    for (var E = [], T = 0; T <= d; T++) {
                                        var w = 0;
                                        "right" === this._font.align ? w = c - o[T] : "center" === this._font.align && (w = (c - o[T]) / 2), E.push(w)
                                    }
                                    for (var S = n.length, I = this.tint, P = 0; P < S; P++) {
                                        var A = this._glyphs[P];
                                        A ? A.texture = n[P].texture : ((A = new Jo(n[P].texture)).roundPixels = this.roundPixels, this._glyphs.push(A)), A.position.x = (n[P].position.x + E[n[P].line]) * r, A.position.y = n[P].position.y * r, A.scale.x = A.scale.y = r, A.tint = I, A.parent || this.addChild(A)
                                    }
                                    for (var O = S; O < this._glyphs.length; ++O) this.removeChild(this._glyphs[O]);
                                    if (this._textWidth = c * r, this._textHeight = (i.y + t.lineHeight) * r, 0 !== this.anchor.x || 0 !== this.anchor.y)
                                        for (var D = 0; D < S; D++) this._glyphs[D].x -= this._textWidth * this.anchor.x, this._glyphs[D].y -= this._textHeight * this.anchor.y;
                                    this._maxLineHeight = g * r
                                }, e.prototype.updateTransform = function () {
                                    this.validate(), this.containerUpdateTransform()
                                }, e.prototype.getLocalBounds = function () {
                                    return this.validate(), t.prototype.getLocalBounds.call(this)
                                }, e.prototype.validate = function () {
                                    this.dirty && (this.updateText(), this.dirty = !1)
                                }, r.tint.get = function () {
                                    return this._font.tint
                                }, r.tint.set = function (t) {
                                    this._font.tint = "number" == typeof t && t >= 0 ? t : 16777215, this.dirty = !0
                                }, r.align.get = function () {
                                    return this._font.align
                                }, r.align.set = function (t) {
                                    this._font.align = t || "left", this.dirty = !0
                                }, r.anchor.get = function () {
                                    return this._anchor
                                }, r.anchor.set = function (t) {
                                    "number" == typeof t ? this._anchor.set(t) : this._anchor.copyFrom(t)
                                }, r.font.get = function () {
                                    return this._font
                                }, r.font.set = function (t) {
                                    t && ("string" == typeof t ? (t = t.split(" "), this._font.name = 1 === t.length ? t[0] : t.slice(1).join(" "), this._font.size = t.length >= 2 ? parseInt(t[0], 10) : e.fonts[this._font.name].size) : (this._font.name = t.name, this._font.size = "number" == typeof t.size ? t.size : parseInt(t.size, 10)), this.dirty = !0)
                                }, r.text.get = function () {
                                    return this._text
                                }, r.text.set = function (t) {
                                    t = String(null == t ? "" : t), this._text !== t && (this._text = t, this.dirty = !0)
                                }, r.maxWidth.get = function () {
                                    return this._maxWidth
                                }, r.maxWidth.set = function (t) {
                                    this._maxWidth !== t && (this._maxWidth = t, this.dirty = !0)
                                }, r.maxLineHeight.get = function () {
                                    return this.validate(), this._maxLineHeight
                                }, r.textWidth.get = function () {
                                    return this.validate(), this._textWidth
                                }, r.letterSpacing.get = function () {
                                    return this._letterSpacing
                                }, r.letterSpacing.set = function (t) {
                                    this._letterSpacing !== t && (this._letterSpacing = t, this.dirty = !0)
                                }, r.textHeight.get = function () {
                                    return this.validate(), this._textHeight
                                }, e.registerFont = function (t, r) {
                                    var i = {},
                                        n = t.getElementsByTagName("info")[0],
                                        o = t.getElementsByTagName("common")[0],
                                        s = t.getElementsByTagName("page"),
                                        a = Ge(s[0].getAttribute("file"), V.RESOLUTION),
                                        h = {};
                                    i.font = n.getAttribute("face"), i.size = parseInt(n.getAttribute("size"), 10), i.lineHeight = parseInt(o.getAttribute("lineHeight"), 10) / a, i.chars = {}, r instanceof ii && (r = [r]);
                                    for (var u = 0; u < s.length; u++) {
                                        var l = s[u].getAttribute("id"),
                                            c = s[u].getAttribute("file");
                                        h[l] = r instanceof Array ? r[u] : r[c]
                                    }
                                    for (var d = t.getElementsByTagName("char"), p = 0; p < d.length; p++) {
                                        var f = d[p],
                                            m = parseInt(f.getAttribute("id"), 10),
                                            g = f.getAttribute("page") || 0,
                                            v = new ar(parseInt(f.getAttribute("x"), 10) / a + h[g].frame.x / a, parseInt(f.getAttribute("y"), 10) / a + h[g].frame.y / a, parseInt(f.getAttribute("width"), 10) / a, parseInt(f.getAttribute("height"), 10) / a);
                                        i.chars[m] = {
                                            xOffset: parseInt(f.getAttribute("xoffset"), 10) / a,
                                            yOffset: parseInt(f.getAttribute("yoffset"), 10) / a,
                                            xAdvance: parseInt(f.getAttribute("xadvance"), 10) / a,
                                            kerning: {},
                                            texture: new ii(h[g].baseTexture, v),
                                            page: g
                                        }
                                    }
                                    for (var y = t.getElementsByTagName("kerning"), _ = 0; _ < y.length; _++) {
                                        var x = y[_],
                                            b = parseInt(x.getAttribute("first"), 10) / a,
                                            E = parseInt(x.getAttribute("second"), 10) / a,
                                            T = parseInt(x.getAttribute("amount"), 10) / a;
                                        i.chars[E] && (i.chars[E].kerning[b] = T)
                                    }
                                    return e.fonts[i.font] = i, i
                                }, Object.defineProperties(e.prototype, r), e
                            }(mr);
                        Rs.fonts = {};
                        var Ns = function () {};
                        Ns.parse = function (t, e) {
                            t.bitmapFont = Rs.registerFont(t.data, e)
                        }, Ns.add = function () {
                            xo.setExtensionXhrType("fnt", xo.XHR_RESPONSE_TYPE.DOCUMENT)
                        }, Ns.dirname = function (t) {
                            var e = t.replace(/\\/g, "/").replace(/\/$/, "").replace(/\/[^\/]*$/, "");
                            return e === t ? "." : "" === e ? "/" : e
                        }, Ns.use = function (t, e) {
                            if (t.data && t.type === xo.TYPE.XML)
                                if (0 !== t.data.getElementsByTagName("page").length && 0 !== t.data.getElementsByTagName("info").length && null !== t.data.getElementsByTagName("info")[0].getAttribute("face")) {
                                    var r = t.isDataUrl ? "" : Ns.dirname(t.url);
                                    t.isDataUrl && ("." === r && (r = ""), this.baseUrl && r && "/" === this.baseUrl.charAt(this.baseUrl.length - 1) && (r += "/")), (r = r.replace(this.baseUrl, "")) && "/" !== r.charAt(r.length - 1) && (r += "/");
                                    for (var i = t.data.getElementsByTagName("page"), n = {}, o = function (r) {
                                            n[r.metadata.pageFile] = r.texture, Object.keys(n).length === i.length && (Ns.parse(t, n), e())
                                        }, s = 0; s < i.length; ++s) {
                                        var a = i[s].getAttribute("file"),
                                            h = r + a,
                                            u = !1;
                                        for (var l in this.resources) {
                                            var c = this.resources[l];
                                            if (c.url === h) {
                                                c.metadata.pageFile = a, c.texture ? o(c) : c.onAfterMiddleware.add(o), u = !0;
                                                break
                                            }
                                        }
                                        if (!u) {
                                            var d = {
                                                crossOrigin: t.crossOrigin,
                                                loadType: xo.LOAD_TYPE.IMAGE,
                                                metadata: Object.assign({
                                                    pageFile: a
                                                }, t.metadata.imageMetadata),
                                                parentResource: t
                                            };
                                            this.add(h, d, o)
                                        }
                                    }
                                } else e();
                            else e()
                        };
                        /*!
                         * @pixi/filter-alpha - v5.2.1
                         * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                         *
                         * @pixi/filter-alpha is licensed under the MIT License.
                         * http://www.opensource.org/licenses/mit-license
                         */
                        var Ls = function (t) {
                            function e(e) {
                                void 0 === e && (e = 1), t.call(this, Cn, "varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float uAlpha;\n\nvoid main(void)\n{\n   gl_FragColor = texture2D(uSampler, vTextureCoord) * uAlpha;\n}\n", {
                                    uAlpha: 1
                                }), this.alpha = e
                            }
                            t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
                            var r = {
                                alpha: {
                                    configurable: !0
                                }
                            };
                            return r.alpha.get = function () {
                                return this.uniforms.uAlpha
                            }, r.alpha.set = function (t) {
                                this.uniforms.uAlpha = t
                            }, Object.defineProperties(e.prototype, r), e
                        }(sn);
                        var Fs = {
                                5: [.153388, .221461, .250301],
                                7: [.071303, .131514, .189879, .214607],
                                9: [.028532, .067234, .124009, .179044, .20236],
                                11: [.0093, .028002, .065984, .121703, .175713, .198596],
                                13: [.002406, .009255, .027867, .065666, .121117, .174868, .197641],
                                15: [489e-6, .002403, .009246, .02784, .065602, .120999, .174697, .197448]
                            },
                            Bs = ["varying vec2 vBlurTexCoords[%size%];", "uniform sampler2D uSampler;", "void main(void)", "{", "    gl_FragColor = vec4(0.0);", "    %blur%", "}"].join("\n");
                        var Us = function (t) {
                                function e(e, r, i, n, o) {
                                    var s = function (t, e) {
                                            var r, i = Math.ceil(t / 2),
                                                n = "\n    attribute vec2 aVertexPosition;\n\n    uniform mat3 projectionMatrix;\n\n    uniform float strength;\n\n    varying vec2 vBlurTexCoords[%size%];\n\n    uniform vec4 inputSize;\n    uniform vec4 outputFrame;\n\n    vec4 filterVertexPosition( void )\n    {\n        vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n        return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n    }\n\n    vec2 filterTextureCoord( void )\n    {\n        return aVertexPosition * (outputFrame.zw * inputSize.zw);\n    }\n\n    void main(void)\n    {\n        gl_Position = filterVertexPosition();\n\n        vec2 textureCoord = filterTextureCoord();\n        %blur%\n    }",
                                                o = "";
                                            r = e ? "vBlurTexCoords[%index%] =  textureCoord + vec2(%sampleIndex% * strength, 0.0);" : "vBlurTexCoords[%index%] =  textureCoord + vec2(0.0, %sampleIndex% * strength);";
                                            for (var s = 0; s < t; s++) {
                                                var a = r.replace("%index%", s);
                                                o += a = a.replace("%sampleIndex%", s - (i - 1) + ".0"), o += "\n"
                                            }
                                            return n = (n = n.replace("%blur%", o)).replace("%size%", t)
                                        }(o = o || 5, e),
                                        a = function (t) {
                                            for (var e, r = Fs[t], i = r.length, n = Bs, o = "", s = 0; s < t; s++) {
                                                var a = "gl_FragColor += texture2D(uSampler, vBlurTexCoords[%index%]) * %value%;".replace("%index%", s);
                                                e = s, s >= i && (e = t - s - 1), o += a = a.replace("%value%", r[e]), o += "\n"
                                            }
                                            return n = (n = n.replace("%blur%", o)).replace("%size%", t)
                                        }(o);
                                    t.call(this, s, a), this.horizontal = e, this.resolution = n || V.RESOLUTION, this._quality = 0, this.quality = i || 4, this.blur = r || 8
                                }
                                t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
                                var r = {
                                    blur: {
                                        configurable: !0
                                    },
                                    quality: {
                                        configurable: !0
                                    }
                                };
                                return e.prototype.apply = function (t, e, r, i) {
                                    if (r ? this.horizontal ? this.uniforms.strength = 1 / r.width * (r.width / e.width) : this.uniforms.strength = 1 / r.height * (r.height / e.height) : this.horizontal ? this.uniforms.strength = 1 / t.renderer.width * (t.renderer.width / e.width) : this.uniforms.strength = 1 / t.renderer.height * (t.renderer.height / e.height), this.uniforms.strength *= this.strength, this.uniforms.strength /= this.passes, 1 === this.passes) t.applyFilter(this, e, r, i);
                                    else {
                                        var n = t.getFilterTexture(),
                                            o = t.renderer,
                                            s = e,
                                            a = n;
                                        this.state.blend = !1, t.applyFilter(this, s, a, !0);
                                        for (var h = 1; h < this.passes - 1; h++) {
                                            o.renderTexture.bind(s, s.filterFrame), this.uniforms.uSampler = a;
                                            var u = a;
                                            a = s, s = u, o.shader.bind(this), o.geometry.draw(5)
                                        }
                                        this.state.blend = !0, t.applyFilter(this, a, r, i), t.returnFilterTexture(n)
                                    }
                                }, r.blur.get = function () {
                                    return this.strength
                                }, r.blur.set = function (t) {
                                    this.padding = 1 + 2 * Math.abs(t), this.strength = t
                                }, r.quality.get = function () {
                                    return this._quality
                                }, r.quality.set = function (t) {
                                    this._quality = t, this.passes = t
                                }, Object.defineProperties(e.prototype, r), e
                            }(sn),
                            ks = function (t) {
                                function e(e, r, i, n) {
                                    t.call(this), this.blurXFilter = new Us(!0, e, r, i, n), this.blurYFilter = new Us(!1, e, r, i, n), this.resolution = i || V.RESOLUTION, this.quality = r || 4, this.blur = e || 8, this.repeatEdgePixels = !1
                                }
                                t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
                                var r = {
                                    blur: {
                                        configurable: !0
                                    },
                                    quality: {
                                        configurable: !0
                                    },
                                    blurX: {
                                        configurable: !0
                                    },
                                    blurY: {
                                        configurable: !0
                                    },
                                    blendMode: {
                                        configurable: !0
                                    },
                                    repeatEdgePixels: {
                                        configurable: !0
                                    }
                                };
                                return e.prototype.apply = function (t, e, r, i) {
                                    var n = Math.abs(this.blurXFilter.strength),
                                        o = Math.abs(this.blurYFilter.strength);
                                    if (n && o) {
                                        var s = t.getFilterTexture();
                                        this.blurXFilter.apply(t, e, s, !0), this.blurYFilter.apply(t, s, r, i), t.returnFilterTexture(s)
                                    } else o ? this.blurYFilter.apply(t, e, r, i) : this.blurXFilter.apply(t, e, r, i)
                                }, e.prototype.updatePadding = function () {
                                    this._repeatEdgePixels ? this.padding = 0 : this.padding = 2 * Math.max(Math.abs(this.blurXFilter.strength), Math.abs(this.blurYFilter.strength))
                                }, r.blur.get = function () {
                                    return this.blurXFilter.blur
                                }, r.blur.set = function (t) {
                                    this.blurXFilter.blur = this.blurYFilter.blur = t, this.updatePadding()
                                }, r.quality.get = function () {
                                    return this.blurXFilter.quality
                                }, r.quality.set = function (t) {
                                    this.blurXFilter.quality = this.blurYFilter.quality = t
                                }, r.blurX.get = function () {
                                    return this.blurXFilter.blur
                                }, r.blurX.set = function (t) {
                                    this.blurXFilter.blur = t, this.updatePadding()
                                }, r.blurY.get = function () {
                                    return this.blurYFilter.blur
                                }, r.blurY.set = function (t) {
                                    this.blurYFilter.blur = t, this.updatePadding()
                                }, r.blendMode.get = function () {
                                    return this.blurYFilter.blendMode
                                }, r.blendMode.set = function (t) {
                                    this.blurYFilter.blendMode = t
                                }, r.repeatEdgePixels.get = function () {
                                    return this._repeatEdgePixels
                                }, r.repeatEdgePixels.set = function (t) {
                                    this._repeatEdgePixels = t, this.updatePadding()
                                }, Object.defineProperties(e.prototype, r), e
                            }(sn),
                            Xs = function (t) {
                                function e() {
                                    var e = {
                                        m: new Float32Array([1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0]),
                                        uAlpha: 1
                                    };
                                    t.call(this, Mn, "varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform float m[20];\nuniform float uAlpha;\n\nvoid main(void)\n{\n    vec4 c = texture2D(uSampler, vTextureCoord);\n\n    if (uAlpha == 0.0) {\n        gl_FragColor = c;\n        return;\n    }\n\n    // Un-premultiply alpha before applying the color matrix. See issue #3539.\n    if (c.a > 0.0) {\n      c.rgb /= c.a;\n    }\n\n    vec4 result;\n\n    result.r = (m[0] * c.r);\n        result.r += (m[1] * c.g);\n        result.r += (m[2] * c.b);\n        result.r += (m[3] * c.a);\n        result.r += m[4];\n\n    result.g = (m[5] * c.r);\n        result.g += (m[6] * c.g);\n        result.g += (m[7] * c.b);\n        result.g += (m[8] * c.a);\n        result.g += m[9];\n\n    result.b = (m[10] * c.r);\n       result.b += (m[11] * c.g);\n       result.b += (m[12] * c.b);\n       result.b += (m[13] * c.a);\n       result.b += m[14];\n\n    result.a = (m[15] * c.r);\n       result.a += (m[16] * c.g);\n       result.a += (m[17] * c.b);\n       result.a += (m[18] * c.a);\n       result.a += m[19];\n\n    vec3 rgb = mix(c.rgb, result.rgb, uAlpha);\n\n    // Premultiply alpha again.\n    rgb *= result.a;\n\n    gl_FragColor = vec4(rgb, result.a);\n}\n", e), this.alpha = 1
                                }
                                t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
                                var r = {
                                    matrix: {
                                        configurable: !0
                                    },
                                    alpha: {
                                        configurable: !0
                                    }
                                };
                                return e.prototype._loadMatrix = function (t, e) {
                                    void 0 === e && (e = !1);
                                    var r = t;
                                    e && (this._multiply(r, this.uniforms.m, t), r = this._colorMatrix(r)), this.uniforms.m = r
                                }, e.prototype._multiply = function (t, e, r) {
                                    return t[0] = e[0] * r[0] + e[1] * r[5] + e[2] * r[10] + e[3] * r[15], t[1] = e[0] * r[1] + e[1] * r[6] + e[2] * r[11] + e[3] * r[16], t[2] = e[0] * r[2] + e[1] * r[7] + e[2] * r[12] + e[3] * r[17], t[3] = e[0] * r[3] + e[1] * r[8] + e[2] * r[13] + e[3] * r[18], t[4] = e[0] * r[4] + e[1] * r[9] + e[2] * r[14] + e[3] * r[19] + e[4], t[5] = e[5] * r[0] + e[6] * r[5] + e[7] * r[10] + e[8] * r[15], t[6] = e[5] * r[1] + e[6] * r[6] + e[7] * r[11] + e[8] * r[16], t[7] = e[5] * r[2] + e[6] * r[7] + e[7] * r[12] + e[8] * r[17], t[8] = e[5] * r[3] + e[6] * r[8] + e[7] * r[13] + e[8] * r[18], t[9] = e[5] * r[4] + e[6] * r[9] + e[7] * r[14] + e[8] * r[19] + e[9], t[10] = e[10] * r[0] + e[11] * r[5] + e[12] * r[10] + e[13] * r[15], t[11] = e[10] * r[1] + e[11] * r[6] + e[12] * r[11] + e[13] * r[16], t[12] = e[10] * r[2] + e[11] * r[7] + e[12] * r[12] + e[13] * r[17], t[13] = e[10] * r[3] + e[11] * r[8] + e[12] * r[13] + e[13] * r[18], t[14] = e[10] * r[4] + e[11] * r[9] + e[12] * r[14] + e[13] * r[19] + e[14], t[15] = e[15] * r[0] + e[16] * r[5] + e[17] * r[10] + e[18] * r[15], t[16] = e[15] * r[1] + e[16] * r[6] + e[17] * r[11] + e[18] * r[16], t[17] = e[15] * r[2] + e[16] * r[7] + e[17] * r[12] + e[18] * r[17], t[18] = e[15] * r[3] + e[16] * r[8] + e[17] * r[13] + e[18] * r[18], t[19] = e[15] * r[4] + e[16] * r[9] + e[17] * r[14] + e[18] * r[19] + e[19], t
                                }, e.prototype._colorMatrix = function (t) {
                                    var e = new Float32Array(t);
                                    return e[4] /= 255, e[9] /= 255, e[14] /= 255, e[19] /= 255, e
                                }, e.prototype.brightness = function (t, e) {
                                    var r = [t, 0, 0, 0, 0, 0, t, 0, 0, 0, 0, 0, t, 0, 0, 0, 0, 0, 1, 0];
                                    this._loadMatrix(r, e)
                                }, e.prototype.greyscale = function (t, e) {
                                    var r = [t, t, t, 0, 0, t, t, t, 0, 0, t, t, t, 0, 0, 0, 0, 0, 1, 0];
                                    this._loadMatrix(r, e)
                                }, e.prototype.blackAndWhite = function (t) {
                                    this._loadMatrix([.3, .6, .1, 0, 0, .3, .6, .1, 0, 0, .3, .6, .1, 0, 0, 0, 0, 0, 1, 0], t)
                                }, e.prototype.hue = function (t, e) {
                                    t = (t || 0) / 180 * Math.PI;
                                    var r = Math.cos(t),
                                        i = Math.sin(t),
                                        n = 1 / 3,
                                        o = (0, Math.sqrt)(n),
                                        s = [r + (1 - r) * n, n * (1 - r) - o * i, n * (1 - r) + o * i, 0, 0, n * (1 - r) + o * i, r + n * (1 - r), n * (1 - r) - o * i, 0, 0, n * (1 - r) - o * i, n * (1 - r) + o * i, r + n * (1 - r), 0, 0, 0, 0, 0, 1, 0];
                                    this._loadMatrix(s, e)
                                }, e.prototype.contrast = function (t, e) {
                                    var r = (t || 0) + 1,
                                        i = -.5 * (r - 1),
                                        n = [r, 0, 0, 0, i, 0, r, 0, 0, i, 0, 0, r, 0, i, 0, 0, 0, 1, 0];
                                    this._loadMatrix(n, e)
                                }, e.prototype.saturate = function (t, e) {
                                    void 0 === t && (t = 0);
                                    var r = 2 * t / 3 + 1,
                                        i = -.5 * (r - 1),
                                        n = [r, i, i, 0, 0, i, r, i, 0, 0, i, i, r, 0, 0, 0, 0, 0, 1, 0];
                                    this._loadMatrix(n, e)
                                }, e.prototype.desaturate = function () {
                                    this.saturate(-1)
                                }, e.prototype.negative = function (t) {
                                    this._loadMatrix([-1, 0, 0, 1, 0, 0, -1, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 1, 0], t)
                                }, e.prototype.sepia = function (t) {
                                    this._loadMatrix([.393, .7689999, .18899999, 0, 0, .349, .6859999, .16799999, 0, 0, .272, .5339999, .13099999, 0, 0, 0, 0, 0, 1, 0], t)
                                }, e.prototype.technicolor = function (t) {
                                    this._loadMatrix([1.9125277891456083, -.8545344976951645, -.09155508482755585, 0, 11.793603434377337, -.3087833385928097, 1.7658908555458428, -.10601743074722245, 0, -70.35205161461398, -.231103377548616, -.7501899197440212, 1.847597816108189, 0, 30.950940869491138, 0, 0, 0, 1, 0], t)
                                }, e.prototype.polaroid = function (t) {
                                    this._loadMatrix([1.438, -.062, -.062, 0, 0, -.122, 1.378, -.122, 0, 0, -.016, -.016, 1.483, 0, 0, 0, 0, 0, 1, 0], t)
                                }, e.prototype.toBGR = function (t) {
                                    this._loadMatrix([0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0], t)
                                }, e.prototype.kodachrome = function (t) {
                                    this._loadMatrix([1.1285582396593525, -.3967382283601348, -.03992559172921793, 0, 63.72958762196502, -.16404339962244616, 1.0835251566291304, -.05498805115633132, 0, 24.732407896706203, -.16786010706155763, -.5603416277695248, 1.6014850761964943, 0, 35.62982807460946, 0, 0, 0, 1, 0], t)
                                }, e.prototype.browni = function (t) {
                                    this._loadMatrix([.5997023498159715, .34553243048391263, -.2708298674538042, 0, 47.43192855600873, -.037703249837783157, .8609577587992641, .15059552388459913, 0, -36.96841498319127, .24113635128153335, -.07441037908422492, .44972182064877153, 0, -7.562075277591283, 0, 0, 0, 1, 0], t)
                                }, e.prototype.vintage = function (t) {
                                    this._loadMatrix([.6279345635605994, .3202183420819367, -.03965408211312453, 0, 9.651285835294123, .02578397704808868, .6441188644374771, .03259127616149294, 0, 7.462829176470591, .0466055556782719, -.0851232987247891, .5241648018700465, 0, 5.159190588235296, 0, 0, 0, 1, 0], t)
                                }, e.prototype.colorTone = function (t, e, r, i, n) {
                                    var o = ((r = r || 16770432) >> 16 & 255) / 255,
                                        s = (r >> 8 & 255) / 255,
                                        a = (255 & r) / 255,
                                        h = ((i = i || 3375104) >> 16 & 255) / 255,
                                        u = (i >> 8 & 255) / 255,
                                        l = (255 & i) / 255,
                                        c = [.3, .59, .11, 0, 0, o, s, a, t = t || .2, 0, h, u, l, e = e || .15, 0, o - h, s - u, a - l, 0, 0];
                                    this._loadMatrix(c, n)
                                }, e.prototype.night = function (t, e) {
                                    var r = [-2 * (t = t || .1), -t, 0, 0, 0, -t, 0, t, 0, 0, 0, t, 2 * t, 0, 0, 0, 0, 0, 1, 0];
                                    this._loadMatrix(r, e)
                                }, e.prototype.predator = function (t, e) {
                                    var r = [11.224130630493164 * t, -4.794486999511719 * t, -2.8746118545532227 * t, 0 * t, .40342438220977783 * t, -3.6330697536468506 * t, 9.193157196044922 * t, -2.951810836791992 * t, 0 * t, -1.316135048866272 * t, -3.2184197902679443 * t, -4.2375030517578125 * t, 7.476448059082031 * t, 0 * t, .8044459223747253 * t, 0, 0, 0, 1, 0];
                                    this._loadMatrix(r, e)
                                }, e.prototype.lsd = function (t) {
                                    this._loadMatrix([2, -.4, .5, 0, 0, -.5, 2, -.4, 0, 0, -.4, -.5, 3, 0, 0, 0, 0, 0, 1, 0], t)
                                }, e.prototype.reset = function () {
                                    this._loadMatrix([1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0], !1)
                                }, r.matrix.get = function () {
                                    return this.uniforms.m
                                }, r.matrix.set = function (t) {
                                    this.uniforms.m = t
                                }, r.alpha.get = function () {
                                    return this.uniforms.uAlpha
                                }, r.alpha.set = function (t) {
                                    this.uniforms.uAlpha = t
                                }, Object.defineProperties(e.prototype, r), e
                            }(sn);
                        Xs.prototype.grayscale = Xs.prototype.greyscale;
                        /*!
                         * @pixi/filter-displacement - v5.2.1
                         * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                         *
                         * @pixi/filter-displacement is licensed under the MIT License.
                         * http://www.opensource.org/licenses/mit-license
                         */
                        var js = function (t) {
                                function e(e, r) {
                                    var i = new $e;
                                    e.renderable = !1, t.call(this, "attribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\nuniform mat3 filterMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vFilterCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n    vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n    return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n    return aVertexPosition * (outputFrame.zw * inputSize.zw);\n}\n\nvoid main(void)\n{\n\tgl_Position = filterVertexPosition();\n\tvTextureCoord = filterTextureCoord();\n\tvFilterCoord = ( filterMatrix * vec3( vTextureCoord, 1.0)  ).xy;\n}\n", "varying vec2 vFilterCoord;\nvarying vec2 vTextureCoord;\n\nuniform vec2 scale;\nuniform mat2 rotation;\nuniform sampler2D uSampler;\nuniform sampler2D mapSampler;\n\nuniform highp vec4 inputSize;\nuniform vec4 inputClamp;\n\nvoid main(void)\n{\n  vec4 map =  texture2D(mapSampler, vFilterCoord);\n\n  map -= 0.5;\n  map.xy = scale * inputSize.zw * (rotation * map.xy);\n\n  gl_FragColor = texture2D(uSampler, clamp(vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y), inputClamp.xy, inputClamp.zw));\n}\n", {
                                        mapSampler: e._texture,
                                        filterMatrix: i,
                                        scale: {
                                            x: 1,
                                            y: 1
                                        },
                                        rotation: new Float32Array([1, 0, 0, 1])
                                    }), this.maskSprite = e, this.maskMatrix = i, null == r && (r = 20), this.scale = new Ve(r, r)
                                }
                                t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
                                var r = {
                                    map: {
                                        configurable: !0
                                    }
                                };
                                return e.prototype.apply = function (t, e, r, i) {
                                    this.uniforms.filterMatrix = t.calculateSpriteMatrix(this.maskMatrix, this.maskSprite), this.uniforms.scale.x = this.scale.x, this.uniforms.scale.y = this.scale.y;
                                    var n = this.maskSprite.transform.worldTransform,
                                        o = Math.sqrt(n.a * n.a + n.b * n.b),
                                        s = Math.sqrt(n.c * n.c + n.d * n.d);
                                    0 !== o && 0 !== s && (this.uniforms.rotation[0] = n.a / o, this.uniforms.rotation[1] = n.b / o, this.uniforms.rotation[2] = n.c / s, this.uniforms.rotation[3] = n.d / s), t.applyFilter(this, e, r, i)
                                }, r.map.get = function () {
                                    return this.uniforms.mapSampler
                                }, r.map.set = function (t) {
                                    this.uniforms.mapSampler = t
                                }, Object.defineProperties(e.prototype, r), e
                            }(sn),
                            Hs = function (t) {
                                function e() {
                                    t.call(this, "\nattribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nvarying vec2 vFragCoord;\n\nuniform vec4 inputPixel;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n    vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n    return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvoid texcoords(vec2 fragCoord, vec2 inverseVP,\n               out vec2 v_rgbNW, out vec2 v_rgbNE,\n               out vec2 v_rgbSW, out vec2 v_rgbSE,\n               out vec2 v_rgbM) {\n    v_rgbNW = (fragCoord + vec2(-1.0, -1.0)) * inverseVP;\n    v_rgbNE = (fragCoord + vec2(1.0, -1.0)) * inverseVP;\n    v_rgbSW = (fragCoord + vec2(-1.0, 1.0)) * inverseVP;\n    v_rgbSE = (fragCoord + vec2(1.0, 1.0)) * inverseVP;\n    v_rgbM = vec2(fragCoord * inverseVP);\n}\n\nvoid main(void) {\n\n   gl_Position = filterVertexPosition();\n\n   vFragCoord = aVertexPosition * outputFrame.zw;\n\n   texcoords(vFragCoord, inputPixel.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n}\n", 'varying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nvarying vec2 vFragCoord;\nuniform sampler2D uSampler;\nuniform highp vec4 inputPixel;\n\n\n/**\n Basic FXAA implementation based on the code on geeks3d.com with the\n modification that the texture2DLod stuff was removed since it\'s\n unsupported by WebGL.\n\n --\n\n From:\n https://github.com/mitsuhiko/webgl-meincraft\n\n Copyright (c) 2011 by Armin Ronacher.\n\n Some rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are\n met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials provided\n with the distribution.\n\n * The names of the contributors may not be used to endorse or\n promote products derived from this software without specific\n prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n#ifndef FXAA_REDUCE_MIN\n#define FXAA_REDUCE_MIN   (1.0/ 128.0)\n#endif\n#ifndef FXAA_REDUCE_MUL\n#define FXAA_REDUCE_MUL   (1.0 / 8.0)\n#endif\n#ifndef FXAA_SPAN_MAX\n#define FXAA_SPAN_MAX     8.0\n#endif\n\n//optimized version for mobile, where dependent\n//texture reads can be a bottleneck\nvec4 fxaa(sampler2D tex, vec2 fragCoord, vec2 inverseVP,\n          vec2 v_rgbNW, vec2 v_rgbNE,\n          vec2 v_rgbSW, vec2 v_rgbSE,\n          vec2 v_rgbM) {\n    vec4 color;\n    vec3 rgbNW = texture2D(tex, v_rgbNW).xyz;\n    vec3 rgbNE = texture2D(tex, v_rgbNE).xyz;\n    vec3 rgbSW = texture2D(tex, v_rgbSW).xyz;\n    vec3 rgbSE = texture2D(tex, v_rgbSE).xyz;\n    vec4 texColor = texture2D(tex, v_rgbM);\n    vec3 rgbM  = texColor.xyz;\n    vec3 luma = vec3(0.299, 0.587, 0.114);\n    float lumaNW = dot(rgbNW, luma);\n    float lumaNE = dot(rgbNE, luma);\n    float lumaSW = dot(rgbSW, luma);\n    float lumaSE = dot(rgbSE, luma);\n    float lumaM  = dot(rgbM,  luma);\n    float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\n    float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\n\n    mediump vec2 dir;\n    dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n    dir.y =  ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n\n    float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *\n                          (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\n\n    float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\n    dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),\n              max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\n                  dir * rcpDirMin)) * inverseVP;\n\n    vec3 rgbA = 0.5 * (\n                       texture2D(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz +\n                       texture2D(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz);\n    vec3 rgbB = rgbA * 0.5 + 0.25 * (\n                                     texture2D(tex, fragCoord * inverseVP + dir * -0.5).xyz +\n                                     texture2D(tex, fragCoord * inverseVP + dir * 0.5).xyz);\n\n    float lumaB = dot(rgbB, luma);\n    if ((lumaB < lumaMin) || (lumaB > lumaMax))\n        color = vec4(rgbA, texColor.a);\n    else\n        color = vec4(rgbB, texColor.a);\n    return color;\n}\n\nvoid main() {\n\n      vec4 color;\n\n      color = fxaa(uSampler, vFragCoord, inputPixel.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n\n      gl_FragColor = color;\n}\n')
                                }
                                return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e
                            }(sn),
                            Gs = function (t) {
                                function e(e, r) {
                                    void 0 === e && (e = .5), void 0 === r && (r = Math.random()), t.call(this, Mn, "precision highp float;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform float uNoise;\nuniform float uSeed;\nuniform sampler2D uSampler;\n\nfloat rand(vec2 co)\n{\n    return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main()\n{\n    vec4 color = texture2D(uSampler, vTextureCoord);\n    float randomValue = rand(gl_FragCoord.xy * uSeed);\n    float diff = (randomValue - 0.5) * uNoise;\n\n    // Un-premultiply alpha before applying the color matrix. See issue #3539.\n    if (color.a > 0.0) {\n        color.rgb /= color.a;\n    }\n\n    color.r += diff;\n    color.g += diff;\n    color.b += diff;\n\n    // Premultiply alpha again.\n    color.rgb *= color.a;\n\n    gl_FragColor = color;\n}\n", {
                                        uNoise: 0,
                                        uSeed: 0
                                    }), this.noise = e, this.seed = r
                                }
                                t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
                                var r = {
                                    noise: {
                                        configurable: !0
                                    },
                                    seed: {
                                        configurable: !0
                                    }
                                };
                                return r.noise.get = function () {
                                    return this.uniforms.uNoise
                                }, r.noise.set = function (t) {
                                    this.uniforms.uNoise = t
                                }, r.seed.get = function () {
                                    return this.uniforms.uSeed
                                }, r.seed.set = function (t) {
                                    this.uniforms.uSeed = t
                                }, Object.defineProperties(e.prototype, r), e
                            }(sn),
                            Ys = new $e;
                        pr.prototype._cacheAsBitmap = !1, pr.prototype._cacheData = !1;
                        var zs = function () {
                            this.textureCacheId = null, this.originalRender = null, this.originalRenderCanvas = null, this.originalCalculateBounds = null, this.originalGetLocalBounds = null, this.originalUpdateTransform = null, this.originalHitTest = null, this.originalDestroy = null, this.originalMask = null, this.originalFilterArea = null, this.sprite = null
                        };
                        Object.defineProperties(pr.prototype, {
                                cacheAsBitmap: {
                                    get: function () {
                                        return this._cacheAsBitmap
                                    },
                                    set: function (t) {
                                        var e;
                                        this._cacheAsBitmap !== t && (this._cacheAsBitmap = t, t ? (this._cacheData || (this._cacheData = new zs), (e = this._cacheData).originalRender = this.render, e.originalRenderCanvas = this.renderCanvas, e.originalUpdateTransform = this.updateTransform, e.originalCalculateBounds = this.calculateBounds, e.originalGetLocalBounds = this.getLocalBounds, e.originalDestroy = this.destroy, e.originalContainsPoint = this.containsPoint, e.originalMask = this._mask, e.originalFilterArea = this.filterArea, this.render = this._renderCached, this.renderCanvas = this._renderCachedCanvas, this.destroy = this._cacheAsBitmapDestroy) : ((e = this._cacheData).sprite && this._destroyCachedDisplayObject(), this.render = e.originalRender, this.renderCanvas = e.originalRenderCanvas, this.calculateBounds = e.originalCalculateBounds, this.getLocalBounds = e.originalGetLocalBounds, this.destroy = e.originalDestroy, this.updateTransform = e.originalUpdateTransform, this.containsPoint = e.originalContainsPoint, this._mask = e.originalMask, this.filterArea = e.originalFilterArea))
                                    }
                                }
                            }), pr.prototype._renderCached = function (t) {
                                !this.visible || this.worldAlpha <= 0 || !this.renderable || (this._initCachedDisplayObject(t), this._cacheData.sprite.transform._worldID = this.transform._worldID, this._cacheData.sprite.worldAlpha = this.worldAlpha, this._cacheData.sprite._render(t))
                            }, pr.prototype._initCachedDisplayObject = function (t) {
                                if (!this._cacheData || !this._cacheData.sprite) {
                                    var e = this.alpha;
                                    this.alpha = 1, t.batch.flush();
                                    var r = this.getLocalBounds().clone();
                                    if (this.filters) {
                                        var i = this.filters[0].padding;
                                        r.pad(i)
                                    }
                                    r.ceil(V.RESOLUTION);
                                    var n = t.renderTexture.current,
                                        o = t.renderTexture.sourceFrame,
                                        s = t.projection.transform,
                                        a = oi.create(r.width, r.height),
                                        h = "cacheAsBitmap_" + Me();
                                    this._cacheData.textureCacheId = h, Hr.addToCache(a.baseTexture, h), ii.addToCache(a, h);
                                    var u = Ys;
                                    u.tx = -r.x, u.ty = -r.y, this.transform.worldTransform.identity(), this.render = this._cacheData.originalRender, t.render(this, a, !0, u, !0), t.projection.transform = s, t.renderTexture.bind(n, o), this.render = this._renderCached, this.updateTransform = this.displayObjectUpdateTransform, this.calculateBounds = this._calculateCachedBounds, this.getLocalBounds = this._getCachedLocalBounds, this._mask = null, this.filterArea = null;
                                    var l = new Jo(a);
                                    l.transform.worldTransform = this.transform.worldTransform, l.anchor.x = -r.x / r.width, l.anchor.y = -r.y / r.height, l.alpha = e, l._bounds = this._bounds, this._cacheData.sprite = l, this.transform._parentID = -1, this.parent ? this.updateTransform() : (this.parent = t._tempDisplayObjectParent, this.updateTransform(), this.parent = null), this.containsPoint = l.containsPoint.bind(l)
                                }
                            }, pr.prototype._renderCachedCanvas = function (t) {
                                !this.visible || this.worldAlpha <= 0 || !this.renderable || (this._initCachedDisplayObjectCanvas(t), this._cacheData.sprite.worldAlpha = this.worldAlpha, this._cacheData.sprite._renderCanvas(t))
                            }, pr.prototype._initCachedDisplayObjectCanvas = function (t) {
                                if (!this._cacheData || !this._cacheData.sprite) {
                                    var e = this.getLocalBounds(),
                                        r = this.alpha;
                                    this.alpha = 1;
                                    var i = t.context;
                                    e.ceil(V.RESOLUTION);
                                    var n = oi.create(e.width, e.height),
                                        o = "cacheAsBitmap_" + Me();
                                    this._cacheData.textureCacheId = o, Hr.addToCache(n.baseTexture, o), ii.addToCache(n, o);
                                    var s = Ys;
                                    this.transform.localTransform.copyTo(s), s.invert(), s.tx -= e.x, s.ty -= e.y, this.renderCanvas = this._cacheData.originalRenderCanvas, t.render(this, n, !0, s, !1), t.context = i, this.renderCanvas = this._renderCachedCanvas, this.updateTransform = this.displayObjectUpdateTransform, this.calculateBounds = this._calculateCachedBounds, this.getLocalBounds = this._getCachedLocalBounds, this._mask = null, this.filterArea = null;
                                    var a = new Jo(n);
                                    a.transform.worldTransform = this.transform.worldTransform, a.anchor.x = -e.x / e.width, a.anchor.y = -e.y / e.height, a.alpha = r, a._bounds = this._bounds, this._cacheData.sprite = a, this.transform._parentID = -1, this.parent ? this.updateTransform() : (this.parent = t._tempDisplayObjectParent, this.updateTransform(), this.parent = null), this.containsPoint = a.containsPoint.bind(a)
                                }
                            }, pr.prototype._calculateCachedBounds = function () {
                                this._bounds.clear(), this._cacheData.sprite.transform._worldID = this.transform._worldID, this._cacheData.sprite._calculateBounds(), this._lastBoundsID = this._boundsID
                            }, pr.prototype._getCachedLocalBounds = function () {
                                return this._cacheData.sprite.getLocalBounds()
                            }, pr.prototype._destroyCachedDisplayObject = function () {
                                this._cacheData.sprite._texture.destroy(!0), this._cacheData.sprite = null, Hr.removeFromCache(this._cacheData.textureCacheId), ii.removeFromCache(this._cacheData.textureCacheId), this._cacheData.textureCacheId = null
                            }, pr.prototype._cacheAsBitmapDestroy = function (t) {
                                this.cacheAsBitmap = !1, this.destroy(t)
                            },
                            /*!
                             * @pixi/mixin-get-child-by-name - v5.2.1
                             * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                             *
                             * @pixi/mixin-get-child-by-name is licensed under the MIT License.
                             * http://www.opensource.org/licenses/mit-license
                             */
                            pr.prototype.name = null, mr.prototype.getChildByName = function (t) {
                                for (var e = 0; e < this.children.length; e++)
                                    if (this.children[e].name === t) return this.children[e];
                                return null
                            },
                            /*!
                             * @pixi/mixin-get-global-position - v5.2.1
                             * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                             *
                             * @pixi/mixin-get-global-position is licensed under the MIT License.
                             * http://www.opensource.org/licenses/mit-license
                             */
                            pr.prototype.getGlobalPosition = function (t, e) {
                                return void 0 === t && (t = new Ve), void 0 === e && (e = !1), this.parent ? this.parent.toGlobal(this.position, t, e) : (t.x = this.position.x, t.y = this.position.y), t
                            };
                        var Vs = "5.0.0";
                        /*!
                         * @pixi/mesh - v5.2.1
                         * Compiled Tue, 28 Jan 2020 23:33:11 UTC
                         *
                         * @pixi/mesh is licensed under the MIT License.
                         * http://www.opensource.org/licenses/mit-license
                         */
                        var Ws = function (t, e) {
                            this.uvBuffer = t, this.uvMatrix = e, this.data = null, this._bufferUpdateId = -1, this._textureUpdateId = -1, this._updateID = 0
                        };
                        Ws.prototype.update = function (t) {
                            if (t || this._bufferUpdateId !== this.uvBuffer._updateID || this._textureUpdateId !== this.uvMatrix._updateID) {
                                this._bufferUpdateId = this.uvBuffer._updateID, this._textureUpdateId = this.uvMatrix._updateID;
                                var e = this.uvBuffer.data;
                                this.data && this.data.length === e.length || (this.data = new Float32Array(e.length)), this.uvMatrix.multiplyUvs(e, this.data), this._updateID++
                            }
                        };
                        var qs = new Ve,
                            Ks = new lr,
                            Zs = function (t) {
                                function r(r, i, n, o) {
                                    void 0 === o && (o = e.DRAW_MODES.TRIANGLES), t.call(this), this.geometry = r, r.refCount++, this.shader = i, this.state = n || nn.for2d(), this.drawMode = o, this.start = 0, this.size = 0, this.uvs = null, this.indices = null, this.vertexData = new Float32Array(1), this.vertexDirty = 0, this._transformID = -1, this.tint = 16777215, this.blendMode = e.BLEND_MODES.NORMAL, this._roundPixels = V.ROUND_PIXELS, this.batchUvs = null
                                }
                                t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r;
                                var i = {
                                    uvBuffer: {
                                        configurable: !0
                                    },
                                    verticesBuffer: {
                                        configurable: !0
                                    },
                                    material: {
                                        configurable: !0
                                    },
                                    blendMode: {
                                        configurable: !0
                                    },
                                    roundPixels: {
                                        configurable: !0
                                    },
                                    tint: {
                                        configurable: !0
                                    },
                                    texture: {
                                        configurable: !0
                                    }
                                };
                                return i.uvBuffer.get = function () {
                                    return this.geometry.buffers[1]
                                }, i.verticesBuffer.get = function () {
                                    return this.geometry.buffers[0]
                                }, i.material.set = function (t) {
                                    this.shader = t
                                }, i.material.get = function () {
                                    return this.shader
                                }, i.blendMode.set = function (t) {
                                    this.state.blendMode = t
                                }, i.blendMode.get = function () {
                                    return this.state.blendMode
                                }, i.roundPixels.set = function (t) {
                                    this._roundPixels !== t && (this._transformID = -1), this._roundPixels = t
                                }, i.roundPixels.get = function () {
                                    return this._roundPixels
                                }, i.tint.get = function () {
                                    return this.shader.tint
                                }, i.tint.set = function (t) {
                                    this.shader.tint = t
                                }, i.texture.get = function () {
                                    return this.shader.texture
                                }, i.texture.set = function (t) {
                                    this.shader.texture = t
                                }, r.prototype._render = function (t) {
                                    var i = this.geometry.buffers[0].data;
                                    this.shader.batchable && this.drawMode === e.DRAW_MODES.TRIANGLES && i.length < 2 * r.BATCHABLE_SIZE ? this._renderToBatch(t) : this._renderDefault(t)
                                }, r.prototype._renderDefault = function (t) {
                                    var e = this.shader;
                                    e.alpha = this.worldAlpha, e.update && e.update(), t.batch.flush(), e.program.uniformData.translationMatrix && (e.uniforms.translationMatrix = this.transform.worldTransform.toArray(!0)), t.shader.bind(e), t.state.set(this.state), t.geometry.bind(this.geometry, e), t.geometry.draw(this.drawMode, this.size, this.start, this.geometry.instanceCount)
                                }, r.prototype._renderToBatch = function (t) {
                                    var e = this.geometry;
                                    this.shader.uvMatrix && (this.shader.uvMatrix.update(), this.calculateUvs()), this.calculateVertices(), this.indices = e.indexBuffer.data, this._tintRGB = this.shader._tintRGB, this._texture = this.shader.texture;
                                    var r = this.material.pluginName;
                                    t.batch.setObjectRenderer(t.plugins[r]), t.plugins[r].render(this)
                                }, r.prototype.calculateVertices = function () {
                                    var t = this.geometry,
                                        e = t.buffers[0].data;
                                    if (t.vertexDirtyId !== this.vertexDirty || this._transformID !== this.transform._worldID) {
                                        this._transformID = this.transform._worldID, this.vertexData.length !== e.length && (this.vertexData = new Float32Array(e.length));
                                        for (var r = this.transform.worldTransform, i = r.a, n = r.b, o = r.c, s = r.d, a = r.tx, h = r.ty, u = this.vertexData, l = 0; l < u.length / 2; l++) {
                                            var c = e[2 * l],
                                                d = e[2 * l + 1];
                                            u[2 * l] = i * c + o * d + a, u[2 * l + 1] = n * c + s * d + h
                                        }
                                        if (this._roundPixels)
                                            for (var p = V.RESOLUTION, f = 0; f < u.length; ++f) u[f] = Math.round((u[f] * p | 0) / p);
                                        this.vertexDirty = t.vertexDirtyId
                                    }
                                }, r.prototype.calculateUvs = function () {
                                    var t = this.geometry.buffers[1];
                                    this.shader.uvMatrix.isSimple ? this.uvs = t.data : (this.batchUvs || (this.batchUvs = new Ws(t, this.shader.uvMatrix)), this.batchUvs.update(), this.uvs = this.batchUvs.data)
                                }, r.prototype._calculateBounds = function () {
                                    this.calculateVertices(), this._bounds.addVertexData(this.vertexData, 0, this.vertexData.length)
                                }, r.prototype.containsPoint = function (t) {
                                    if (!this.getBounds().contains(t.x, t.y)) return !1;
                                    this.worldTransform.applyInverse(t, qs);
                                    for (var e = this.geometry.getBuffer("aVertexPosition").data, r = Ks.points, i = this.geometry.getIndex().data, n = i.length, o = 4 === this.drawMode ? 3 : 1, s = 0; s + 2 < n; s += o) {
                                        var a = 2 * i[s],
                                            h = 2 * i[s + 1],
                                            u = 2 * i[s + 2];
                                        if (r[0] = e[a], r[1] = e[a + 1], r[2] = e[h], r[3] = e[h + 1], r[4] = e[u], r[5] = e[u + 1], Ks.contains(qs.x, qs.y)) return !0
                                    }
                                    return !1
                                }, r.prototype.destroy = function (e) {
                                    t.prototype.destroy.call(this, e), this.geometry.refCount--, 0 === this.geometry.refCount && this.geometry.dispose(), this.geometry = null, this.shader = null, this.state = null, this.uvs = null, this.indices = null, this.vertexData = null
                                }, Object.defineProperties(r.prototype, i), r
                            }(mr);
                        Zs.BATCHABLE_SIZE = 100;
                        var $s = function (t) {
                                function e(e, r) {
                                    var i = {
                                        uSampler: e,
                                        alpha: 1,
                                        uTextureMatrix: $e.IDENTITY,
                                        uColor: new Float32Array([1, 1, 1, 1])
                                    };
                                    (r = Object.assign({
                                        tint: 16777215,
                                        alpha: 1,
                                        pluginName: "batch"
                                    }, r)).uniforms && Object.assign(i, r.uniforms), t.call(this, r.program || Qi.from("attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTextureMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n    gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n    vTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;\n}\n", "varying vec2 vTextureCoord;\nuniform vec4 uColor;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n    gl_FragColor = texture2D(uSampler, vTextureCoord) * uColor;\n}\n"), i), this._colorDirty = !1, this.uvMatrix = new hn(e), this.batchable = void 0 === r.program, this.pluginName = r.pluginName, this.tint = r.tint, this.alpha = r.alpha
                                }
                                t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
                                var r = {
                                    texture: {
                                        configurable: !0
                                    },
                                    alpha: {
                                        configurable: !0
                                    },
                                    tint: {
                                        configurable: !0
                                    }
                                };
                                return r.texture.get = function () {
                                    return this.uniforms.uSampler
                                }, r.texture.set = function (t) {
                                    this.uniforms.uSampler !== t && (this.uniforms.uSampler = t, this.uvMatrix.texture = t)
                                }, r.alpha.set = function (t) {
                                    t !== this._alpha && (this._alpha = t, this._colorDirty = !0)
                                }, r.alpha.get = function () {
                                    return this._alpha
                                }, r.tint.set = function (t) {
                                    t !== this._tint && (this._tint = t, this._tintRGB = (t >> 16) + (65280 & t) + ((255 & t) << 16), this._colorDirty = !0)
                                }, r.tint.get = function () {
                                    return this._tint
                                }, e.prototype.update = function () {
                                    if (this._colorDirty) {
                                        this._colorDirty = !1;
                                        var t = this.texture.baseTexture;
                                        Ee(this._tint, this._alpha, this.uniforms.uColor, t.alphaMode)
                                    }
                                    this.uvMatrix.update() && (this.uniforms.uTextureMatrix = this.uvMatrix.mapCoord)
                                }, Object.defineProperties(e.prototype, r), e
                            }(en),
                            Js = function (t) {
                                function r(r, i, n) {
                                    t.call(this);
                                    var o = new ui(r),
                                        s = new ui(i, !0),
                                        a = new ui(n, !0, !0);
                                    this.addAttribute("aVertexPosition", o, 2, !1, e.TYPES.FLOAT).addAttribute("aTextureCoord", s, 2, !1, e.TYPES.FLOAT).addIndex(a), this._updateId = -1
                                }
                                t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r;
                                var i = {
                                    vertexDirtyId: {
                                        configurable: !0
                                    }
                                };
                                return i.vertexDirtyId.get = function () {
                                    return this.buffers[0]._updateID
                                }, Object.defineProperties(r.prototype, i), r
                            }(mi),
                            Qs = function (t) {
                                function e(e, r, i, n) {
                                    void 0 === e && (e = 100), void 0 === r && (r = 100), void 0 === i && (i = 10), void 0 === n && (n = 10), t.call(this), this.segWidth = i, this.segHeight = n, this.width = e, this.height = r, this.build()
                                }
                                return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.build = function () {
                                    for (var t = this.segWidth * this.segHeight, e = [], r = [], i = [], n = this.segWidth - 1, o = this.segHeight - 1, s = this.width / n, a = this.height / o, h = 0; h < t; h++) {
                                        var u = h % this.segWidth,
                                            l = h / this.segWidth | 0;
                                        e.push(u * s, l * a), r.push(u / n, l / o)
                                    }
                                    for (var c = n * o, d = 0; d < c; d++) {
                                        var p = d % n,
                                            f = d / n | 0,
                                            m = f * this.segWidth + p,
                                            g = f * this.segWidth + p + 1,
                                            v = (f + 1) * this.segWidth + p,
                                            y = (f + 1) * this.segWidth + p + 1;
                                        i.push(m, g, v, g, y, v)
                                    }
                                    this.buffers[0].data = new Float32Array(e), this.buffers[1].data = new Float32Array(r), this.indexBuffer.data = new Uint16Array(i), this.buffers[0].update(), this.buffers[1].update(), this.indexBuffer.update()
                                }, e
                            }(Js),
                            ta = function (t) {
                                function e(e, r, i) {
                                    void 0 === e && (e = 200), void 0 === i && (i = 0), t.call(this, new Float32Array(4 * r.length), new Float32Array(4 * r.length), new Uint16Array(6 * (r.length - 1))), this.points = r, this.width = e, this.textureScale = i, this.build()
                                }
                                return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.build = function () {
                                    var t = this.points;
                                    if (t) {
                                        var e = this.getBuffer("aVertexPosition"),
                                            r = this.getBuffer("aTextureCoord"),
                                            i = this.getIndex();
                                        if (!(t.length < 1)) {
                                            e.data.length / 4 !== t.length && (e.data = new Float32Array(4 * t.length), r.data = new Float32Array(4 * t.length), i.data = new Uint16Array(6 * (t.length - 1)));
                                            var n = r.data,
                                                o = i.data;
                                            n[0] = 0, n[1] = 0, n[2] = 0, n[3] = 1;
                                            for (var s = 0, a = t[0], h = this.width * this.textureScale, u = t.length, l = 0; l < u; l++) {
                                                var c = 4 * l;
                                                if (this.textureScale > 0) {
                                                    var d = a.x - t[l].x,
                                                        p = a.y - t[l].y,
                                                        f = Math.sqrt(d * d + p * p);
                                                    a = t[l], s += f / h
                                                } else s = l / (u - 1);
                                                n[c] = s, n[c + 1] = 0, n[c + 2] = s, n[c + 3] = 1
                                            }
                                            for (var m = 0, g = 0; g < u - 1; g++) {
                                                var v = 2 * g;
                                                o[m++] = v, o[m++] = v + 1, o[m++] = v + 2, o[m++] = v + 2, o[m++] = v + 1, o[m++] = v + 3
                                            }
                                            r.update(), i.update(), this.updateVertices()
                                        }
                                    }
                                }, e.prototype.updateVertices = function () {
                                    var t = this.points;
                                    if (!(t.length < 1)) {
                                        for (var e, r = t[0], i = 0, n = 0, o = this.buffers[0].data, s = t.length, a = 0; a < s; a++) {
                                            var h = t[a],
                                                u = 4 * a;
                                            n = -((e = a < t.length - 1 ? t[a + 1] : h).x - r.x), i = e.y - r.y;
                                            var l = Math.sqrt(i * i + n * n),
                                                c = this.textureScale > 0 ? this.textureScale * this.width / 2 : this.width / 2;
                                            i /= l, n /= l, i *= c, n *= c, o[u] = h.x + i, o[u + 1] = h.y + n, o[u + 2] = h.x - i, o[u + 3] = h.y - n, r = h
                                        }
                                        this.buffers[0].update()
                                    }
                                }, e.prototype.update = function () {
                                    this.textureScale > 0 ? this.build() : this.updateVertices()
                                }, e
                            }(Js),
                            ea = function (t) {
                                function r(r, i, n) {
                                    void 0 === n && (n = 0);
                                    var o = new ta(r.height, i, n),
                                        s = new $s(r);
                                    n > 0 && (r.baseTexture.wrapMode = e.WRAP_MODES.REPEAT), t.call(this, o, s), this.autoUpdate = !0
                                }
                                return t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r, r.prototype._render = function (e) {
                                    (this.autoUpdate || this.geometry.width !== this.shader.texture.height) && (this.geometry.width = this.shader.texture.height, this.geometry.update()), t.prototype._render.call(this, e)
                                }, r
                            }(Zs),
                            ra = function (t) {
                                function e(e, r, i) {
                                    var n = new Qs(e.width, e.height, r, i),
                                        o = new $s(ii.WHITE);
                                    t.call(this, n, o), this.texture = e
                                }
                                t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
                                var r = {
                                    texture: {
                                        configurable: !0
                                    }
                                };
                                return e.prototype.textureUpdated = function () {
                                    this._textureID = this.shader.texture._updateID, this.geometry.width = this.shader.texture.width, this.geometry.height = this.shader.texture.height, this.geometry.build()
                                }, r.texture.set = function (t) {
                                    this.shader.texture !== t && (this.shader.texture = t, this._textureID = -1, t.baseTexture.valid ? this.textureUpdated() : t.once("update", this.textureUpdated, this))
                                }, r.texture.get = function () {
                                    return this.shader.texture
                                }, e.prototype._render = function (e) {
                                    this._textureID !== this.shader.texture._updateID && this.textureUpdated(), t.prototype._render.call(this, e)
                                }, Object.defineProperties(e.prototype, r), e
                            }(Zs),
                            ia = function (t) {
                                function e(e, r, i, n, o) {
                                    void 0 === e && (e = ii.EMPTY);
                                    var s = new Js(r, i, n);
                                    s.getBuffer("aVertexPosition").static = !1;
                                    var a = new $s(e);
                                    t.call(this, s, a, null, o), this.autoUpdate = !0
                                }
                                t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
                                var r = {
                                    vertices: {
                                        configurable: !0
                                    }
                                };
                                return r.vertices.get = function () {
                                    return this.geometry.getBuffer("aVertexPosition").data
                                }, r.vertices.set = function (t) {
                                    this.geometry.getBuffer("aVertexPosition").data = t
                                }, e.prototype._render = function (e) {
                                    this.autoUpdate && this.geometry.getBuffer("aVertexPosition").update(), t.prototype._render.call(this, e)
                                }, Object.defineProperties(e.prototype, r), e
                            }(Zs),
                            na = function (t) {
                                function e(e, r, i, n, o) {
                                    t.call(this, ii.WHITE, 4, 4), this._origWidth = e.orig.width, this._origHeight = e.orig.height, this._width = this._origWidth, this._height = this._origHeight, this._leftWidth = void 0 !== r ? r : 10, this._rightWidth = void 0 !== n ? n : 10, this._topHeight = void 0 !== i ? i : 10, this._bottomHeight = void 0 !== o ? o : 10, this.texture = e
                                }
                                t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e;
                                var r = {
                                    vertices: {
                                        configurable: !0
                                    },
                                    width: {
                                        configurable: !0
                                    },
                                    height: {
                                        configurable: !0
                                    },
                                    leftWidth: {
                                        configurable: !0
                                    },
                                    rightWidth: {
                                        configurable: !0
                                    },
                                    topHeight: {
                                        configurable: !0
                                    },
                                    bottomHeight: {
                                        configurable: !0
                                    }
                                };
                                return e.prototype.textureUpdated = function () {
                                    this._textureID = this.shader.texture._updateID, this._refresh()
                                }, r.vertices.get = function () {
                                    return this.geometry.getBuffer("aVertexPosition").data
                                }, r.vertices.set = function (t) {
                                    this.geometry.getBuffer("aVertexPosition").data = t
                                }, e.prototype.updateHorizontalVertices = function () {
                                    var t = this.vertices,
                                        e = this._getMinScale();
                                    t[9] = t[11] = t[13] = t[15] = this._topHeight * e, t[17] = t[19] = t[21] = t[23] = this._height - this._bottomHeight * e, t[25] = t[27] = t[29] = t[31] = this._height
                                }, e.prototype.updateVerticalVertices = function () {
                                    var t = this.vertices,
                                        e = this._getMinScale();
                                    t[2] = t[10] = t[18] = t[26] = this._leftWidth * e, t[4] = t[12] = t[20] = t[28] = this._width - this._rightWidth * e, t[6] = t[14] = t[22] = t[30] = this._width
                                }, e.prototype._getMinScale = function () {
                                    var t = this._leftWidth + this._rightWidth,
                                        e = this._width > t ? 1 : this._width / t,
                                        r = this._topHeight + this._bottomHeight,
                                        i = this._height > r ? 1 : this._height / r;
                                    return Math.min(e, i)
                                }, r.width.get = function () {
                                    return this._width
                                }, r.width.set = function (t) {
                                    this._width = t, this._refresh()
                                }, r.height.get = function () {
                                    return this._height
                                }, r.height.set = function (t) {
                                    this._height = t, this._refresh()
                                }, r.leftWidth.get = function () {
                                    return this._leftWidth
                                }, r.leftWidth.set = function (t) {
                                    this._leftWidth = t, this._refresh()
                                }, r.rightWidth.get = function () {
                                    return this._rightWidth
                                }, r.rightWidth.set = function (t) {
                                    this._rightWidth = t, this._refresh()
                                }, r.topHeight.get = function () {
                                    return this._topHeight
                                }, r.topHeight.set = function (t) {
                                    this._topHeight = t, this._refresh()
                                }, r.bottomHeight.get = function () {
                                    return this._bottomHeight
                                }, r.bottomHeight.set = function (t) {
                                    this._bottomHeight = t, this._refresh()
                                }, e.prototype._refresh = function () {
                                    var t = this.texture,
                                        e = this.geometry.buffers[1].data;
                                    this._origWidth = t.orig.width, this._origHeight = t.orig.height;
                                    var r = 1 / this._origWidth,
                                        i = 1 / this._origHeight;
                                    e[0] = e[8] = e[16] = e[24] = 0, e[1] = e[3] = e[5] = e[7] = 0, e[6] = e[14] = e[22] = e[30] = 1, e[25] = e[27] = e[29] = e[31] = 1, e[2] = e[10] = e[18] = e[26] = r * this._leftWidth, e[4] = e[12] = e[20] = e[28] = 1 - r * this._rightWidth, e[9] = e[11] = e[13] = e[15] = i * this._topHeight, e[17] = e[19] = e[21] = e[23] = 1 - i * this._bottomHeight, this.updateHorizontalVertices(), this.updateVerticalVertices(), this.geometry.buffers[0].update(), this.geometry.buffers[1].update()
                                }, Object.defineProperties(e.prototype, r), e
                            }(ra),
                            oa = function (t) {
                                function r(e, r) {
                                    t.call(this, e[0] instanceof ii ? e[0] : e[0].texture), this._textures = null, this._durations = null, this.textures = e, this._autoUpdate = !1 !== r, this.animationSpeed = 1, this.loop = !0, this.updateAnchor = !1, this.onComplete = null, this.onFrameChange = null, this.onLoop = null, this._currentTime = 0, this.playing = !1
                                }
                                t && (r.__proto__ = t), r.prototype = Object.create(t && t.prototype), r.prototype.constructor = r;
                                var i = {
                                    totalFrames: {
                                        configurable: !0
                                    },
                                    textures: {
                                        configurable: !0
                                    },
                                    currentFrame: {
                                        configurable: !0
                                    }
                                };
                                return r.prototype.stop = function () {
                                    this.playing && (this.playing = !1, this._autoUpdate && br.shared.remove(this.update, this))
                                }, r.prototype.play = function () {
                                    this.playing || (this.playing = !0, this._autoUpdate && br.shared.add(this.update, this, e.UPDATE_PRIORITY.HIGH))
                                }, r.prototype.gotoAndStop = function (t) {
                                    this.stop();
                                    var e = this.currentFrame;
                                    this._currentTime = t, e !== this.currentFrame && this.updateTexture()
                                }, r.prototype.gotoAndPlay = function (t) {
                                    var e = this.currentFrame;
                                    this._currentTime = t, e !== this.currentFrame && this.updateTexture(), this.play()
                                }, r.prototype.update = function (t) {
                                    var e = this.animationSpeed * t,
                                        r = this.currentFrame;
                                    if (null !== this._durations) {
                                        var i = this._currentTime % 1 * this._durations[this.currentFrame];
                                        for (i += e / 60 * 1e3; i < 0;) this._currentTime--, i += this._durations[this.currentFrame];
                                        var n = Math.sign(this.animationSpeed * t);
                                        for (this._currentTime = Math.floor(this._currentTime); i >= this._durations[this.currentFrame];) i -= this._durations[this.currentFrame] * n, this._currentTime += n;
                                        this._currentTime += i / this._durations[this.currentFrame]
                                    } else this._currentTime += e;
                                    this._currentTime < 0 && !this.loop ? (this._currentTime = 0, this.stop(), this.onComplete && this.onComplete()) : this._currentTime >= this._textures.length && !this.loop ? (this._currentTime = this._textures.length - 1, this.stop(), this.onComplete && this.onComplete()) : r !== this.currentFrame && (this.loop && this.onLoop && (this.animationSpeed > 0 && this.currentFrame < r || this.animationSpeed < 0 && this.currentFrame > r) && this.onLoop(), this.updateTexture())
                                }, r.prototype.updateTexture = function () {
                                    this._texture = this._textures[this.currentFrame], this._textureID = -1, this._textureTrimmedID = -1, this._cachedTint = 16777215, this.uvs = this._texture._uvs.uvsFloat32, this.updateAnchor && this._anchor.copyFrom(this._texture.defaultAnchor), this.onFrameChange && this.onFrameChange(this.currentFrame)
                                }, r.prototype.destroy = function (e) {
                                    this.stop(), t.prototype.destroy.call(this, e), this.onComplete = null, this.onFrameChange = null, this.onLoop = null
                                }, r.fromFrames = function (t) {
                                    for (var e = [], i = 0; i < t.length; ++i) e.push(ii.from(t[i]));
                                    return new r(e)
                                }, r.fromImages = function (t) {
                                    for (var e = [], i = 0; i < t.length; ++i) e.push(ii.from(t[i]));
                                    return new r(e)
                                }, i.totalFrames.get = function () {
                                    return this._textures.length
                                }, i.textures.get = function () {
                                    return this._textures
                                }, i.textures.set = function (t) {
                                    if (t[0] instanceof ii) this._textures = t, this._durations = null;
                                    else {
                                        this._textures = [], this._durations = [];
                                        for (var e = 0; e < t.length; e++) this._textures.push(t[e].texture), this._durations.push(t[e].time)
                                    }
                                    this.gotoAndStop(0), this.updateTexture()
                                }, i.currentFrame.get = function () {
                                    var t = Math.floor(this._currentTime) % this._textures.length;
                                    return t < 0 && (t += this._textures.length), t
                                }, Object.defineProperties(r.prototype, i), r
                            }(Jo);
                        On.registerPlugin("extract", Zn), On.registerPlugin("interaction", Cr), On.registerPlugin("particle", To), On.registerPlugin("prepare", xs), On.registerPlugin("batch", zn), On.registerPlugin("tilingSprite", Ms), yo.registerPlugin(Ns), yo.registerPlugin(Ps), Vn.registerPlugin(Er), Vn.registerPlugin(_o);
                        var sa = {
                            AlphaFilter: Ls,
                            BlurFilter: ks,
                            BlurFilterPass: Us,
                            ColorMatrixFilter: Xs,
                            DisplacementFilter: js,
                            FXAAFilter: Hs,
                            NoiseFilter: Gs
                        };
                        return e.AbstractBatchRenderer = Un, e.AbstractRenderer = An, e.AnimatedSprite = oa, e.AppLoaderPlugin = _o, e.Application = Vn, e.Attribute = ai, e.BasePrepare = ds, e.BaseRenderTexture = ti, e.BaseTexture = Hr, e.BatchDrawCall = Nn, e.BatchGeometry = Xn, e.BatchPluginFactory = Gn, e.BatchRenderer = zn, e.BatchShaderGenerator = kn, e.BatchTextureArray = Ln, e.BitmapFontLoader = Ns, e.BitmapText = Rs, e.Bounds = dr, e.Buffer = ui, e.Circle = hr, e.Container = mr, e.CountLimiter = cs, e.CubeTexture = Rn, e.DEG_TO_RAD = Ze, e.DisplayObject = pr, e.Ellipse = ur, e.Extract = Zn, e.FillStyle = So, e.Filter = sn, e.Framebuffer = Jr, e.GLProgram = yn, e.GLTexture = wn, e.GRAPHICS_CURVES = wo, e.Geometry = mi, e.Graphics = Ko, e.GraphicsData = Ho, e.GraphicsGeometry = zo, e.LineStyle = Vo, e.Loader = yo, e.LoaderResource = xo, e.MaskData = Di, e.Matrix = $e, e.Mesh = Zs, e.MeshBatchUvs = Ws, e.MeshGeometry = Js, e.MeshMaterial = $s, e.NineSlicePlane = na, e.ObjectRenderer = Ei, e.ObservablePoint = We, e.PI_2 = qe, e.ParticleContainer = bo, e.ParticleRenderer = To, e.PlaneGeometry = Qs, e.Point = Ve, e.Polygon = lr, e.Prepare = xs, e.Program = Qi, e.Quad = gi, e.QuadUv = vi, e.RAD_TO_DEG = Ke, e.Rectangle = ar, e.RenderTexture = oi, e.RenderTexturePool = si, e.Renderer = On, e.RopeGeometry = ta, e.RoundedRectangle = cr, e.Runner = Rr, e.Shader = en, e.SimpleMesh = ia, e.SimplePlane = ra, e.SimpleRope = ea, e.Sprite = Jo, e.SpriteMaskFilter = ln, e.Spritesheet = Ss, e.SpritesheetLoader = Ps, e.State = nn, e.System = Zr, e.TEXT_GRADIENT = Qo, e.Text = ls, e.TextMetrics = as, e.TextStyle = rs, e.Texture = ii, e.TextureLoader = vo, e.TextureMatrix = hn, e.TextureUvs = ei, e.Ticker = br, e.TickerPlugin = Er, e.TilingSprite = Os, e.TilingSpriteRenderer = Ms, e.TimeLimiter = ws, e.Transform = sr, e.UniformGroup = _i, e.VERSION = "5.2.1", e.ViewableBuffer = Fn, e.accessibility = _r, e.autoDetectRenderer = Dn, e.checkMaxIfStatementsInShader = Ki, e.defaultFilterVertex = Mn, e.defaultVertex = Cn, e.filters = sa, e.graphicsUtils = jo, e.groupD8 = or, e.interaction = Mr, e.isMobile = z, e.resources = Kr, e.settings = V, e.systems = In, e.useDeprecated = function () {
                            var t = this;
                            Object.defineProperties(t, {
                                SVG_SIZE: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.utils.SVG_SIZE property has moved to PIXI.resources.SVGResource.SVG_SIZE"), t.SVGResource.SVG_SIZE
                                    }
                                },
                                TransformStatic: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.TransformStatic class has been removed, use PIXI.Transform"), t.Transform
                                    }
                                },
                                TransformBase: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.TransformBase class has been removed, use PIXI.Transform"), t.Transform
                                    }
                                },
                                TRANSFORM_MODE: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.TRANSFORM_MODE property has been removed"), {
                                            STATIC: 0,
                                            DYNAMIC: 1
                                        }
                                    }
                                },
                                WebGLRenderer: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.WebGLRenderer class has moved to PIXI.Renderer"), t.Renderer
                                    }
                                },
                                CanvasRenderTarget: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.CanvasRenderTarget class has moved to PIXI.utils.CanvasRenderTarget"), t.utils.CanvasRenderTarget
                                    }
                                },
                                loader: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.loader instance has moved to PIXI.Loader.shared"), t.Loader.shared
                                    }
                                },
                                FilterManager: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.FilterManager class has moved to PIXI.systems.FilterSystem"), t.systems.FilterSystem
                                    }
                                },
                                CanvasTinter: {
                                    get: function () {
                                        return Ne("5.2.0", "PIXI.CanvasTinter namespace has moved to PIXI.canvasUtils"), t.canvasUtils
                                    }
                                },
                                GroupD8: {
                                    get: function () {
                                        return Ne("5.2.0", "PIXI.GroupD8 namespace has moved to PIXI.groupD8"), t.groupD8
                                    }
                                }
                            }), t.prepare = {}, Object.defineProperties(t.prepare, {
                                BasePrepare: {
                                    get: function () {
                                        return Ne("5.2.1", "PIXI.prepare.BasePrepare moved to PIXI.BasePrepare"), t.BasePrepare
                                    }
                                },
                                Prepare: {
                                    get: function () {
                                        return Ne("5.2.1", "PIXI.prepare.Prepare moved to PIXI.Prepare"), t.Prepare
                                    }
                                },
                                CanvasPrepare: {
                                    get: function () {
                                        return Ne("5.2.1", "PIXI.prepare.CanvasPrepare moved to PIXI.CanvasPrepare"), t.CanvasPrepare
                                    }
                                }
                            }), t.extract = {}, Object.defineProperties(t.extract, {
                                Extract: {
                                    get: function () {
                                        return Ne("5.2.1", "PIXI.extract.Extract moved to PIXI.Extract"), t.Extract
                                    }
                                },
                                CanvasExtract: {
                                    get: function () {
                                        return Ne("5.2.1", "PIXI.extract.CanvasExtract moved to PIXI.CanvasExtract"), t.CanvasExtract
                                    }
                                }
                            }), t.extras = {}, Object.defineProperties(t.extras, {
                                TilingSprite: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.extras.TilingSprite class has moved to PIXI.TilingSprite"), t.TilingSprite
                                    }
                                },
                                TilingSpriteRenderer: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.extras.TilingSpriteRenderer class has moved to PIXI.TilingSpriteRenderer"), t.TilingSpriteRenderer
                                    }
                                },
                                AnimatedSprite: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.extras.AnimatedSprite class has moved to PIXI.AnimatedSprite"), t.AnimatedSprite
                                    }
                                },
                                BitmapText: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.extras.BitmapText class has moved to PIXI.BitmapText"), t.BitmapText
                                    }
                                }
                            }), Object.defineProperties(t.utils, {
                                getSvgSize: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.utils.getSvgSize function has moved to PIXI.resources.SVGResource.getSize"), t.SVGResource.getSize
                                    }
                                }
                            }), t.mesh = {}, Object.defineProperties(t.mesh, {
                                Mesh: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.mesh.Mesh class has moved to PIXI.SimpleMesh"), t.SimpleMesh
                                    }
                                },
                                NineSlicePlane: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.mesh.NineSlicePlane class has moved to PIXI.NineSlicePlane"), t.NineSlicePlane
                                    }
                                },
                                Plane: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.mesh.Plane class has moved to PIXI.SimplePlane"), t.SimplePlane
                                    }
                                },
                                Rope: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.mesh.Rope class has moved to PIXI.SimpleRope"), t.SimpleRope
                                    }
                                },
                                RawMesh: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.mesh.RawMesh class has moved to PIXI.Mesh"), t.Mesh
                                    }
                                },
                                CanvasMeshRenderer: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.mesh.CanvasMeshRenderer class has moved to PIXI.CanvasMeshRenderer"), t.CanvasMeshRenderer
                                    }
                                },
                                MeshRenderer: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.mesh.MeshRenderer class has moved to PIXI.MeshRenderer"), t.MeshRenderer
                                    }
                                }
                            }), t.particles = {}, Object.defineProperties(t.particles, {
                                ParticleContainer: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.particles.ParticleContainer class has moved to PIXI.ParticleContainer"), t.ParticleContainer
                                    }
                                },
                                ParticleRenderer: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.particles.ParticleRenderer class has moved to PIXI.ParticleRenderer"), t.ParticleRenderer
                                    }
                                }
                            }), t.ticker = {}, Object.defineProperties(t.ticker, {
                                Ticker: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.ticker.Ticker class has moved to PIXI.Ticker"), t.Ticker
                                    }
                                },
                                shared: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.ticker.shared instance has moved to PIXI.Ticker.shared"), t.Ticker.shared
                                    }
                                }
                            }), t.loaders = {}, Object.defineProperties(t.loaders, {
                                Loader: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.loaders.Loader class has moved to PIXI.Loader"), t.Loader
                                    }
                                },
                                Resource: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.loaders.Resource class has moved to PIXI.LoaderResource"), t.LoaderResource
                                    }
                                },
                                bitmapFontParser: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.loaders.bitmapFontParser function has moved to PIXI.BitmapFontLoader.use"), t.BitmapFontLoader.use
                                    }
                                },
                                parseBitmapFontData: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.loaders.parseBitmapFontData function has moved to PIXI.BitmapFontLoader.parse"), t.BitmapFontLoader.parse
                                    }
                                },
                                spritesheetParser: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.loaders.spritesheetParser function has moved to PIXI.SpritesheetLoader.use"), t.SpritesheetLoader.use
                                    }
                                },
                                getResourcePath: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.loaders.getResourcePath property has moved to PIXI.SpritesheetLoader.getResourcePath"), t.SpritesheetLoader.getResourcePath
                                    }
                                }
                            }), t.Loader.addPixiMiddleware = function (e) {
                                return Ne(Vs, "PIXI.loaders.Loader.addPixiMiddleware function is deprecated, use PIXI.loaders.Loader.registerPlugin"), t.loaders.Loader.registerPlugin({
                                    use: e()
                                })
                            }, Object.defineProperty(t.extract, "WebGLExtract", {
                                get: function () {
                                    return Ne(Vs, "PIXI.extract.WebGLExtract method has moved to PIXI.Extract"), t.Extract
                                }
                            }), Object.defineProperty(t.prepare, "WebGLPrepare", {
                                get: function () {
                                    return Ne(Vs, "PIXI.prepare.WebGLPrepare class has moved to PIXI.Prepare"), t.Prepare
                                }
                            }), t.Container.prototype._renderWebGL = function (t) {
                                Ne(Vs, "PIXI.Container._renderWebGL method has moved to PIXI.Container._render"), this._render(t)
                            }, t.Container.prototype.renderWebGL = function (t) {
                                Ne(Vs, "PIXI.Container.renderWebGL method has moved to PIXI.Container.render"), this.render(t)
                            }, t.DisplayObject.prototype.renderWebGL = function (t) {
                                Ne(Vs, "PIXI.DisplayObject.renderWebGL method has moved to PIXI.DisplayObject.render"), this.render(t)
                            }, t.Container.prototype.renderAdvancedWebGL = function (t) {
                                Ne(Vs, "PIXI.Container.renderAdvancedWebGL method has moved to PIXI.Container.renderAdvanced"), this.renderAdvanced(t)
                            }, Object.defineProperties(t.settings, {
                                TRANSFORM_MODE: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.settings.TRANSFORM_MODE property has been removed"), 0
                                    },
                                    set: function () {
                                        Ne(Vs, "PIXI.settings.TRANSFORM_MODE property has been removed")
                                    }
                                }
                            });
                            var e = t.BaseTexture;
                            e.prototype.loadSource = function (e) {
                                Ne(Vs, "PIXI.BaseTexture.loadSource method has been deprecated");
                                var r = t.resources.autoDetectResource(e);
                                r.internal = !0, this.setResource(r), this.update()
                            };
                            var r = !1;
                            Object.defineProperties(e.prototype, {
                                hasLoaded: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.BaseTexture.hasLoaded property has been removed, use PIXI.BaseTexture.valid"), this.valid
                                    }
                                },
                                imageUrl: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.BaseTexture.imageUrl property has been removed, use PIXI.BaseTexture.resource.url"), this.resource && this.resource.url
                                    },
                                    set: function (t) {
                                        Ne(Vs, "PIXI.BaseTexture.imageUrl property has been removed, use PIXI.BaseTexture.resource.url"), this.resource && (this.resource.url = t)
                                    }
                                },
                                source: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.BaseTexture.source property has been moved, use `PIXI.BaseTexture.resource.source`"), this.resource && this.resource.source
                                    },
                                    set: function (t) {
                                        Ne(Vs, "PIXI.BaseTexture.source property has been moved, use `PIXI.BaseTexture.resource.source` if you want to set HTMLCanvasElement. Otherwise, create new BaseTexture."), this.resource && (this.resource.source = t)
                                    }
                                },
                                premultiplyAlpha: {
                                    get: function () {
                                        return Ne("5.2.0", "PIXI.BaseTexture.premultiplyAlpha property has been changed to `alphaMode`, see `PIXI.ALPHA_MODES`"), 0 !== this.alphaMode
                                    },
                                    set: function (t) {
                                        Ne("5.2.0", "PIXI.BaseTexture.premultiplyAlpha property has been changed to `alphaMode`, see `PIXI.ALPHA_MODES`"), this.alphaMode = Number(t)
                                    }
                                },
                                _id: {
                                    get: function () {
                                        return r || (Ne("5.2.0", "PIXI.BaseTexture._id batch local field has been changed to `_batchLocation`"), r = !0), this._batchLocation
                                    },
                                    set: function (t) {
                                        this._batchLocation = t
                                    }
                                }
                            }), e.fromImage = function (t, r, i, n) {
                                Ne(Vs, "PIXI.BaseTexture.fromImage method has been replaced with PIXI.BaseTexture.from");
                                var o = {
                                    scale: n,
                                    crossorigin: r
                                };
                                return e.from(t, {
                                    scaleMode: i,
                                    resourceOptions: o
                                })
                            }, e.fromCanvas = function (t, r) {
                                return Ne(Vs, "PIXI.BaseTexture.fromCanvas method has been replaced with PIXI.BaseTexture.from"), e.from(t, {
                                    scaleMode: r
                                })
                            }, e.fromSVG = function (t, r, i, n) {
                                Ne(Vs, "PIXI.BaseTexture.fromSVG method has been replaced with PIXI.BaseTexture.from");
                                var o = {
                                    scale: n,
                                    crossorigin: r
                                };
                                return e.from(t, {
                                    scaleMode: i,
                                    resourceOptions: o
                                })
                            }, Object.defineProperties(t.resources.ImageResource.prototype, {
                                premultiplyAlpha: {
                                    get: function () {
                                        return Ne("5.2.0", "PIXI.resources.ImageResource.premultiplyAlpha property has been changed to `alphaMode`, see `PIXI.ALPHA_MODES`"), 0 !== this.alphaMode
                                    },
                                    set: function (t) {
                                        Ne("5.2.0", "PIXI.resources.ImageResource.premultiplyAlpha property has been changed to `alphaMode`, see `PIXI.ALPHA_MODES`"), this.alphaMode = Number(t)
                                    }
                                }
                            }), t.Point.prototype.copy = function (t) {
                                return Ne(Vs, "PIXI.Point.copy method has been replaced with PIXI.Point.copyFrom"), this.copyFrom(t)
                            }, t.ObservablePoint.prototype.copy = function (t) {
                                return Ne(Vs, "PIXI.ObservablePoint.copy method has been replaced with PIXI.ObservablePoint.copyFrom"), this.copyFrom(t)
                            }, t.Rectangle.prototype.copy = function (t) {
                                return Ne(Vs, "PIXI.Rectangle.copy method has been replaced with PIXI.Rectangle.copyFrom"), this.copyFrom(t)
                            }, t.Matrix.prototype.copy = function (t) {
                                return Ne(Vs, "PIXI.Matrix.copy method has been replaced with PIXI.Matrix.copyTo"), this.copyTo(t)
                            }, t.systems.StateSystem.prototype.setState = function (t) {
                                return Ne("v5.1.0", "StateSystem.setState has been renamed to StateSystem.set"), this.set(t)
                            }, Object.assign(t.systems.FilterSystem.prototype, {
                                getRenderTarget: function (t, e) {
                                    return Ne(Vs, "PIXI.FilterManager.getRenderTarget method has been replaced with PIXI.systems.FilterSystem#getFilterTexture"), this.getFilterTexture(e)
                                },
                                returnRenderTarget: function (t) {
                                    Ne(Vs, "PIXI.FilterManager.returnRenderTarget method has been replaced with PIXI.systems.FilterSystem.returnFilterTexture"), this.returnFilterTexture(t)
                                },
                                calculateScreenSpaceMatrix: function (t) {
                                    Ne(Vs, "PIXI.systems.FilterSystem.calculateScreenSpaceMatrix method is removed, use `(vTextureCoord * inputSize.xy) + outputFrame.xy` instead");
                                    var e = t.identity(),
                                        r = this.activeState,
                                        i = r.sourceFrame,
                                        n = r.destinationFrame;
                                    return e.translate(i.x / n.width, i.y / n.height), e.scale(n.width, n.height), e
                                },
                                calculateNormalizedScreenSpaceMatrix: function (t) {
                                    Ne(Vs, "PIXI.systems.FilterManager.calculateNormalizedScreenSpaceMatrix method is removed, use `((vTextureCoord * inputSize.xy) + outputFrame.xy) / outputFrame.zw` instead.");
                                    var e = this.activeState,
                                        r = e.sourceFrame,
                                        i = e.destinationFrame,
                                        n = t.identity();
                                    n.translate(r.x / i.width, r.y / i.height);
                                    var o = i.width / r.width,
                                        s = i.height / r.height;
                                    return n.scale(o, s), n
                                }
                            }), Object.defineProperties(t.RenderTexture.prototype, {
                                sourceFrame: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.RenderTexture.sourceFrame property has been removed"), this.filterFrame
                                    }
                                },
                                size: {
                                    get: function () {
                                        return Ne(Vs, "PIXI.RenderTexture.size property has been removed"), this._frame
                                    }
                                }
                            });
                            var i = function (t) {
                                    function e(e, r, i, n) {
                                        Ne(Vs, "PIXI.filters.BlurXFilter class is deprecated, use PIXI.filters.BlurFilterPass"), t.call(this, !0, e, r, i, n)
                                    }
                                    return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e
                                }(t.filters.BlurFilterPass),
                                n = function (t) {
                                    function e(e, r, i, n) {
                                        Ne(Vs, "PIXI.filters.BlurYFilter class is deprecated, use PIXI.filters.BlurFilterPass"), t.call(this, !1, e, r, i, n)
                                    }
                                    return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e
                                }(t.filters.BlurFilterPass);
                            Object.assign(t.filters, {
                                BlurXFilter: i,
                                BlurYFilter: n
                            });
                            var o = t.Sprite,
                                s = t.Texture,
                                a = t.Graphics;

                            function h(t, e, r, i) {
                                return Ne(Vs, "PIXI.Sprite." + t + " method is deprecated, use PIXI.Sprite.from"), o.from(e, {
                                    resourceOptions: {
                                        scale: i,
                                        crossorigin: r
                                    }
                                })
                            }

                            function u(t, e, r, i) {
                                return Ne(Vs, "PIXI.Texture." + t + " method is deprecated, use PIXI.Texture.from"), s.from(e, {
                                    resourceOptions: {
                                        scale: i,
                                        crossorigin: r
                                    }
                                })
                            }
                            a.prototype.generateCanvasTexture || (a.prototype.generateCanvasTexture = function () {
                                Ne(Vs, 'PIXI.Graphics.generateCanvasTexture method is only available in "pixi.js-legacy"')
                            }), Object.defineProperty(t.Graphics.prototype, "graphicsData", {
                                get: function () {
                                    return Ne(Vs, "PIXI.Graphics.graphicsData property is deprecated, use PIXI.Graphics.geometry.graphicsData"), this.geometry.graphicsData
                                }
                            }), Object.defineProperty(t.SimpleRope.prototype, "points", {
                                get: function () {
                                    return Ne(Vs, "PIXI.SimpleRope.points property is deprecated, use PIXI.SimpleRope.geometry.points"), this.geometry.points
                                },
                                set: function (t) {
                                    Ne(Vs, "PIXI.SimpleRope.points property is deprecated, use PIXI.SimpleRope.geometry.points"), this.geometry.points = t
                                }
                            }), o.fromImage = h.bind(null, "fromImage"), o.fromSVG = h.bind(null, "fromSVG"), o.fromCanvas = h.bind(null, "fromCanvas"), o.fromVideo = h.bind(null, "fromVideo"), o.fromFrame = h.bind(null, "fromFrame"), s.fromImage = u.bind(null, "fromImage"), s.fromSVG = u.bind(null, "fromSVG"), s.fromCanvas = u.bind(null, "fromCanvas"), s.fromVideo = u.bind(null, "fromVideo"), s.fromFrame = u.bind(null, "fromFrame"), Object.defineProperty(t.AbstractRenderer.prototype, "autoResize", {
                                get: function () {
                                    return Ne(Vs, "PIXI.AbstractRenderer.autoResize property is deprecated, use PIXI.AbstractRenderer.autoDensity"), this.autoDensity
                                },
                                set: function (t) {
                                    Ne(Vs, "PIXI.AbstractRenderer.autoResize property is deprecated, use PIXI.AbstractRenderer.autoDensity"), this.autoDensity = t
                                }
                            }), Object.defineProperty(t.Renderer.prototype, "textureManager", {
                                get: function () {
                                    return Ne(Vs, "PIXI.Renderer.textureManager property is deprecated, use PIXI.Renderer.texture"), this.texture
                                }
                            }), t.utils.mixins = {
                                mixin: function () {
                                    Ne(Vs, "PIXI.utils.mixins.mixin function is no longer available")
                                },
                                delayMixin: function () {
                                    Ne(Vs, "PIXI.utils.mixins.delayMixin function is no longer available")
                                },
                                performMixins: function () {
                                    Ne(Vs, "PIXI.utils.mixins.performMixins function is no longer available")
                                }
                            }
                        }, e.utils = ze, e
                    }({});
                return _.useDeprecated(), _.utils.skipHello(), _.dispatchEvent = function (t) {
                    for (var r = new s.a(t.type), i = 0; i < t.touches.length; i++) t.touches[i].clientX = t.touches[i].x * c, t.touches[i].clientY = t.touches[i].y * c, t.touches[i].layerX = t.touches[i].x * c, t.touches[i].layerY = t.touches[i].y * c;
                    for (i = 0; i < t.changedTouches.length; i++) t.changedTouches[i].clientX = t.changedTouches[i].x * c, t.changedTouches[i].clientY = t.changedTouches[i].y * c, t.changedTouches[i].layerX = t.changedTouches[i].x * c, t.changedTouches[i].layerY = t.changedTouches[i].y * c;
                    r.target = e, r.touches = t.touches, r.targetTouches = Array.prototype.slice.call(t.touches), r.changedTouches = t.changedTouches, r.timeStamp = t.timeStamp, o.a.dispatchEvent(r)
                }, _
            }
        }.call(this, r(1), r(8).setImmediate)
}, function (t, e, r) {
    (function (t) {
        var i = void 0 !== t && t || "undefined" != typeof self && self || window,
            n = Function.prototype.apply;

        function o(t, e) {
            this._id = t, this._clearFn = e
        }
        e.setTimeout = function () {
            return new o(n.call(setTimeout, i, arguments), clearTimeout)
        }, e.setInterval = function () {
            return new o(n.call(setInterval, i, arguments), clearInterval)
        }, e.clearTimeout = e.clearInterval = function (t) {
            t && t.close()
        }, o.prototype.unref = o.prototype.ref = function () {}, o.prototype.close = function () {
            this._clearFn.call(i, this._id)
        }, e.enroll = function (t, e) {
            clearTimeout(t._idleTimeoutId), t._idleTimeout = e
        }, e.unenroll = function (t) {
            clearTimeout(t._idleTimeoutId), t._idleTimeout = -1
        }, e._unrefActive = e.active = function (t) {
            clearTimeout(t._idleTimeoutId);
            var e = t._idleTimeout;
            e >= 0 && (t._idleTimeoutId = setTimeout((function () {
                t._onTimeout && t._onTimeout()
            }), e))
        }, r(9), e.setImmediate = "undefined" != typeof self && self.setImmediate || void 0 !== t && t.setImmediate || this && this.setImmediate, e.clearImmediate = "undefined" != typeof self && self.clearImmediate || void 0 !== t && t.clearImmediate || this && this.clearImmediate
    }).call(this, r(1))
}, function (t, e, r) {
    (function (t, e) {
        ! function (t, r) {
            "use strict";
            if (!t.setImmediate) {
                var i, n, o, s, a, h = 1,
                    u = {},
                    l = !1,
                    c = t.document,
                    d = Object.getPrototypeOf && Object.getPrototypeOf(t);
                d = d && d.setTimeout ? d : t, "[object process]" === {}.toString.call(t.process) ? i = function (t) {
                    e.nextTick((function () {
                        f(t)
                    }))
                } : ! function () {
                    if (t.postMessage && !t.importScripts) {
                        var e = !0,
                            r = t.onmessage;
                        return t.onmessage = function () {
                            e = !1
                        }, t.postMessage("", "*"), t.onmessage = r, e
                    }
                }() ? t.MessageChannel ? ((o = new MessageChannel).port1.onmessage = function (t) {
                    f(t.data)
                }, i = function (t) {
                    o.port2.postMessage(t)
                }) : c && "onreadystatechange" in c.createElement("script") ? (n = c.documentElement, i = function (t) {
                    var e = c.createElement("script");
                    e.onreadystatechange = function () {
                        f(t), e.onreadystatechange = null, n.removeChild(e), e = null
                    }, n.appendChild(e)
                }) : i = function (t) {
                    setTimeout(f, 0, t)
                } : (s = "setImmediate$" + Math.random() + "$", a = function (e) {
                    e.source === t && "string" == typeof e.data && 0 === e.data.indexOf(s) && f(+e.data.slice(s.length))
                }, t.addEventListener ? t.addEventListener("message", a, !1) : t.attachEvent("onmessage", a), i = function (e) {
                    t.postMessage(s + e, "*")
                }), d.setImmediate = function (t) {
                    "function" != typeof t && (t = new Function("" + t));
                    for (var e = new Array(arguments.length - 1), r = 0; r < e.length; r++) e[r] = arguments[r + 1];
                    var n = {
                        callback: t,
                        args: e
                    };
                    return u[h] = n, i(h), h++
                }, d.clearImmediate = p
            }

            function p(t) {
                delete u[t]
            }

            function f(t) {
                if (l) setTimeout(f, 0, t);
                else {
                    var e = u[t];
                    if (e) {
                        l = !0;
                        try {
                            ! function (t) {
                                var e = t.callback,
                                    r = t.args;
                                switch (r.length) {
                                    case 0:
                                        e();
                                        break;
                                    case 1:
                                        e(r[0]);
                                        break;
                                    case 2:
                                        e(r[0], r[1]);
                                        break;
                                    case 3:
                                        e(r[0], r[1], r[2]);
                                        break;
                                    default:
                                        e.apply(void 0, r)
                                }
                            }(e)
                        } finally {
                            p(t), l = !1
                        }
                    }
                }
            }
        }("undefined" == typeof self ? void 0 === t ? this : t : self)
    }).call(this, r(1), r(10))
}, function (t, e) {
    var r, i, n = t.exports = {};

    function o() {
        throw new Error("setTimeout has not been defined")
    }

    function s() {
        throw new Error("clearTimeout has not been defined")
    }

    function a(t) {
        if (r === setTimeout) return setTimeout(t, 0);
        if ((r === o || !r) && setTimeout) return r = setTimeout, setTimeout(t, 0);
        try {
            return r(t, 0)
        } catch (e) {
            try {
                return r.call(null, t, 0)
            } catch (e) {
                return r.call(this, t, 0)
            }
        }
    }! function () {
        try {
            r = "function" == typeof setTimeout ? setTimeout : o
        } catch (t) {
            r = o
        }
        try {
            i = "function" == typeof clearTimeout ? clearTimeout : s
        } catch (t) {
            i = s
        }
    }();
    var h, u = [],
        l = !1,
        c = -1;

    function d() {
        l && h && (l = !1, h.length ? u = h.concat(u) : c = -1, u.length && p())
    }

    function p() {
        if (!l) {
            var t = a(d);
            l = !0;
            for (var e = u.length; e;) {
                for (h = u, u = []; ++c < e;) h && h[c].run();
                c = -1, e = u.length
            }
            h = null, l = !1,
                function (t) {
                    if (i === clearTimeout) return clearTimeout(t);
                    if ((i === s || !i) && clearTimeout) return i = clearTimeout, clearTimeout(t);
                    try {
                        i(t)
                    } catch (e) {
                        try {
                            return i.call(null, t)
                        } catch (e) {
                            return i.call(this, t)
                        }
                    }
                }(t)
        }
    }

    function f(t, e) {
        this.fun = t, this.array = e
    }

    function m() {}
    n.nextTick = function (t) {
        var e = new Array(arguments.length - 1);
        if (arguments.length > 1)
            for (var r = 1; r < arguments.length; r++) e[r - 1] = arguments[r];
        u.push(new f(t, e)), 1 !== u.length || l || a(p)
    }, f.prototype.run = function () {
        this.fun.apply(null, this.array)
    }, n.title = "browser", n.browser = !0, n.env = {}, n.argv = [], n.version = "", n.versions = {}, n.on = m, n.addListener = m, n.once = m, n.off = m, n.removeListener = m, n.removeAllListeners = m, n.emit = m, n.prependListener = m, n.prependOnceListener = m, n.listeners = function (t) {
        return []
    }, n.binding = function (t) {
        throw new Error("process.binding is not supported")
    }, n.cwd = function () {
        return "/"
    }, n.chdir = function (t) {
        throw new Error("process.chdir is not supported")
    }, n.umask = function () {
        return 0
    }
}, function (t, e, r) {
    "use strict";

    function i(t) {
        return /[A-Z]/.test(t) ? t.charCodeAt(0) - "A".charCodeAt(0) : /[a-z]/.test(t) ? t.charCodeAt(0) - "a".charCodeAt(0) + 26 : /[0-9]/.test(t) ? t.charCodeAt(0) - "0".charCodeAt(0) + 52 : "+" === t ? 62 : "/" === t ? 63 : void 0
    }
    t.exports = function (t) {
        if ((t = (t = "" + t).replace(/[ \t\n\f\r]/g, "")).length % 4 == 0 && (t = t.replace(/==?$/, "")), t.length % 4 == 1 || /[^+/0-9A-Za-z]/.test(t)) return null;
        let e = "",
            r = 0,
            n = 0;
        for (let o = 0; o < t.length; o++) r <<= 6, r |= i(t[o]), n += 6, 24 === n && (e += String.fromCharCode((16711680 & r) >> 16), e += String.fromCharCode((65280 & r) >> 8), e += String.fromCharCode(255 & r), r = n = 0);
        return 12 === n ? (r >>= 4, e += String.fromCharCode(r)) : 18 === n && (r >>= 2, e += String.fromCharCode((65280 & r) >> 8), e += String.fromCharCode(255 & r)), e
    }
}, function (t, e, r) {
    "use strict";

    function i(t) {
        return t < 26 ? String.fromCharCode(t + "A".charCodeAt(0)) : t < 52 ? String.fromCharCode(t - 26 + "a".charCodeAt(0)) : t < 62 ? String.fromCharCode(t - 52 + "0".charCodeAt(0)) : 62 === t ? "+" : 63 === t ? "/" : void 0
    }
    t.exports = function (t) {
        let e;
        for (t = "" + t, e = 0; e < t.length; e++)
            if (t.charCodeAt(e) > 255) return null;
        let r = "";
        for (e = 0; e < t.length; e += 3) {
            const n = [void 0, void 0, void 0, void 0];
            n[0] = t.charCodeAt(e) >> 2, n[1] = (3 & t.charCodeAt(e)) << 4, t.length > e + 1 && (n[1] |= t.charCodeAt(e + 1) >> 4, n[2] = (15 & t.charCodeAt(e + 1)) << 2), t.length > e + 2 && (n[2] |= t.charCodeAt(e + 2) >> 6, n[3] = 63 & t.charCodeAt(e + 2));
            for (let t = 0; t < n.length; t++) void 0 === n[t] ? r += "=" : r += i(n[t])
        }
        return r
    }
}, function (t, e) {
    var r;

    function i(t, e, r) {
        return e in t ? Object.defineProperty(t, e, {
            value: r,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : t[e] = r, t
    }
    e.entityMap = (i(r = {
        lt: "<",
        gt: ">",
        amp: "&",
        quot: '"',
        apos: "'",
        Agrave: "À",
        Aacute: "Á",
        Acirc: "Â",
        Atilde: "Ã",
        Auml: "Ä",
        auml: "ä",
        Aring: "Å",
        aring: "å",
        AElig: "Æ",
        Ccedil: "Ç",
        Egrave: "È",
        Eacute: "É",
        Ecirc: "Ê",
        Euml: "Ë",
        Igrave: "Ì",
        Iacute: "Í",
        Icirc: "Î",
        Iuml: "Ï",
        ETH: "Ð",
        Ntilde: "Ñ",
        Ograve: "Ò",
        Oacute: "Ó",
        Ocirc: "Ô",
        Otilde: "Õ",
        Ouml: "Ö",
        ouml: "ö",
        Oslash: "Ø",
        Ugrave: "Ù",
        Uacute: "Ú",
        Ucirc: "Û",
        Uuml: "Ü",
        Yacute: "Ý",
        THORN: "Þ",
        szlig: "ß",
        agrave: "à",
        aacute: "á",
        acirc: "â",
        atilde: "ã"
    }, "auml", "ä"), i(r, "aring", "å"), i(r, "aelig", "æ"), i(r, "ccedil", "ç"), i(r, "egrave", "è"), i(r, "eacute", "é"), i(r, "ecirc", "ê"), i(r, "euml", "ë"), i(r, "igrave", "ì"), i(r, "iacute", "í"), i(r, "icirc", "î"), i(r, "iuml", "ï"), i(r, "eth", "ð"), i(r, "ntilde", "ñ"), i(r, "ograve", "ò"), i(r, "oacute", "ó"), i(r, "ocirc", "ô"), i(r, "otilde", "õ"), i(r, "ouml", "ö"), i(r, "oslash", "ø"), i(r, "ugrave", "ù"), i(r, "uacute", "ú"), i(r, "ucirc", "û"), i(r, "uuml", "ü"), i(r, "yacute", "ý"), i(r, "thorn", "þ"), i(r, "yuml", "ÿ"), i(r, "nbsp", " "), i(r, "iexcl", "¡"), i(r, "cent", "¢"), i(r, "pound", "£"), i(r, "curren", "¤"), i(r, "yen", "¥"), i(r, "brvbar", "¦"), i(r, "sect", "§"), i(r, "uml", "¨"), i(r, "copy", "©"), i(r, "ordf", "ª"), i(r, "laquo", "«"), i(r, "not", "¬"), i(r, "shy", "­­"), i(r, "reg", "®"), i(r, "macr", "¯"), i(r, "deg", "°"), i(r, "plusmn", "±"), i(r, "sup2", "²"), i(r, "sup3", "³"), i(r, "acute", "´"), i(r, "micro", "µ"), i(r, "para", "¶"), i(r, "middot", "·"), i(r, "cedil", "¸"), i(r, "sup1", "¹"), i(r, "ordm", "º"), i(r, "raquo", "»"), i(r, "frac14", "¼"), i(r, "frac12", "½"), i(r, "frac34", "¾"), i(r, "iquest", "¿"), i(r, "times", "×"), i(r, "divide", "÷"), i(r, "forall", "∀"), i(r, "part", "∂"), i(r, "exist", "∃"), i(r, "empty", "∅"), i(r, "nabla", "∇"), i(r, "isin", "∈"), i(r, "notin", "∉"), i(r, "ni", "∋"), i(r, "prod", "∏"), i(r, "sum", "∑"), i(r, "minus", "−"), i(r, "lowast", "∗"), i(r, "radic", "√"), i(r, "prop", "∝"), i(r, "infin", "∞"), i(r, "ang", "∠"), i(r, "and", "∧"), i(r, "or", "∨"), i(r, "cap", "∩"), i(r, "cup", "∪"), i(r, "int", "∫"), i(r, "there4", "∴"), i(r, "sim", "∼"), i(r, "cong", "≅"), i(r, "asymp", "≈"), i(r, "ne", "≠"), i(r, "equiv", "≡"), i(r, "le", "≤"), i(r, "ge", "≥"), i(r, "sub", "⊂"), i(r, "sup", "⊃"), i(r, "nsub", "⊄"), i(r, "sube", "⊆"), i(r, "supe", "⊇"), i(r, "oplus", "⊕"), i(r, "otimes", "⊗"), i(r, "perp", "⊥"), i(r, "sdot", "⋅"), i(r, "Alpha", "Α"), i(r, "Beta", "Β"), i(r, "Gamma", "Γ"), i(r, "Delta", "Δ"), i(r, "Epsilon", "Ε"), i(r, "Zeta", "Ζ"), i(r, "Eta", "Η"), i(r, "Theta", "Θ"), i(r, "Iota", "Ι"), i(r, "Kappa", "Κ"), i(r, "Lambda", "Λ"), i(r, "Mu", "Μ"), i(r, "Nu", "Ν"), i(r, "Xi", "Ξ"), i(r, "Omicron", "Ο"), i(r, "Pi", "Π"), i(r, "Rho", "Ρ"), i(r, "Sigma", "Σ"), i(r, "Tau", "Τ"), i(r, "Upsilon", "Υ"), i(r, "Phi", "Φ"), i(r, "Chi", "Χ"), i(r, "Psi", "Ψ"), i(r, "Omega", "Ω"), i(r, "alpha", "α"), i(r, "beta", "β"), i(r, "gamma", "γ"), i(r, "delta", "δ"), i(r, "epsilon", "ε"), i(r, "zeta", "ζ"), i(r, "eta", "η"), i(r, "theta", "θ"), i(r, "iota", "ι"), i(r, "kappa", "κ"), i(r, "lambda", "λ"), i(r, "mu", "μ"), i(r, "nu", "ν"), i(r, "xi", "ξ"), i(r, "omicron", "ο"), i(r, "pi", "π"), i(r, "rho", "ρ"), i(r, "sigmaf", "ς"), i(r, "sigma", "σ"), i(r, "tau", "τ"), i(r, "upsilon", "υ"), i(r, "phi", "φ"), i(r, "chi", "χ"), i(r, "psi", "ψ"), i(r, "omega", "ω"), i(r, "thetasym", "ϑ"), i(r, "upsih", "ϒ"), i(r, "piv", "ϖ"), i(r, "OElig", "Œ"), i(r, "oelig", "œ"), i(r, "Scaron", "Š"), i(r, "scaron", "š"), i(r, "Yuml", "Ÿ"), i(r, "fnof", "ƒ"), i(r, "circ", "ˆ"), i(r, "tilde", "˜"), i(r, "ensp", " "), i(r, "emsp", " "), i(r, "thinsp", " "), i(r, "zwnj", "‌"), i(r, "zwj", "‍"), i(r, "lrm", "‎"), i(r, "rlm", "‏"), i(r, "ndash", "–"), i(r, "mdash", "—"), i(r, "lsquo", "‘"), i(r, "rsquo", "’"), i(r, "sbquo", "‚"), i(r, "ldquo", "“"), i(r, "rdquo", "”"), i(r, "bdquo", "„"), i(r, "dagger", "†"), i(r, "Dagger", "‡"), i(r, "bull", "•"), i(r, "hellip", "…"), i(r, "permil", "‰"), i(r, "prime", "′"), i(r, "Prime", "″"), i(r, "lsaquo", "‹"), i(r, "rsaquo", "›"), i(r, "oline", "‾"), i(r, "euro", "€"), i(r, "trade", "™"), i(r, "larr", "←"), i(r, "uarr", "↑"), i(r, "rarr", "→"), i(r, "darr", "↓"), i(r, "harr", "↔"), i(r, "crarr", "↵"), i(r, "lceil", "⌈"), i(r, "rceil", "⌉"), i(r, "lfloor", "⌊"), i(r, "rfloor", "⌋"), i(r, "loz", "◊"), i(r, "spades", "♠"), i(r, "clubs", "♣"), i(r, "hearts", "♥"), i(r, "diams", "♦"), r)
}, function (t, e) {
    var r = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,
        i = new RegExp("[\\-\\.0-9" + r.source.slice(1, -1) + "\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"),
        n = new RegExp("^" + r.source + i.source + "*(?::" + r.source + i.source + "*)?$");

    function o() {}

    function s(t, e) {
        return e.lineNumber = t.lineNumber, e.columnNumber = t.columnNumber, e
    }

    function a(t, e, r, i, n, o) {
        for (var s, a = ++e, h = 0;;) {
            var u = t.charAt(a);
            switch (u) {
                case "=":
                    if (1 === h) s = t.slice(e, a), h = 3;
                    else {
                        if (2 !== h) throw new Error("attribute equal must after attrName");
                        h = 3
                    }
                    break;
                case "'":
                case '"':
                    if (3 === h || 1 === h) {
                        if (1 === h && (o.warning('attribute value must after "="'), s = t.slice(e, a)), e = a + 1, !((a = t.indexOf(u, e)) > 0)) throw new Error("attribute value no end '" + u + "' match");
                        l = t.slice(e, a).replace(/&#?\w+;/g, n), r.add(s, l, e - 1), h = 5
                    } else {
                        if (4 != h) throw new Error('attribute value must after "="');
                        l = t.slice(e, a).replace(/&#?\w+;/g, n), r.add(s, l, e), o.warning('attribute "' + s + '" missed start quot(' + u + ")!!"), e = a + 1, h = 5
                    }
                    break;
                case "/":
                    switch (h) {
                        case 0:
                            r.setTagName(t.slice(e, a));
                        case 5:
                        case 6:
                        case 7:
                            h = 7, r.closed = !0;
                        case 4:
                        case 1:
                        case 2:
                            break;
                        default:
                            throw new Error("attribute invalid close char('/')")
                    }
                    break;
                case "":
                    return o.error("unexpected end of input"), 0 == h && r.setTagName(t.slice(e, a)), a;
                case ">":
                    switch (h) {
                        case 0:
                            r.setTagName(t.slice(e, a));
                        case 5:
                        case 6:
                        case 7:
                            break;
                        case 4:
                        case 1:
                            "/" === (l = t.slice(e, a)).slice(-1) && (r.closed = !0, l = l.slice(0, -1));
                        case 2:
                            2 === h && (l = s), 4 == h ? (o.warning('attribute "' + l + '" missed quot(")!!'), r.add(s, l.replace(/&#?\w+;/g, n), e)) : ("http://www.w3.org/1999/xhtml" === i[""] && l.match(/^(?:disabled|checked|selected)$/i) || o.warning('attribute "' + l + '" missed value!! "' + l + '" instead!!'), r.add(l, l, e));
                            break;
                        case 3:
                            throw new Error("attribute value missed!!")
                    }
                    return a;
                case "":
                    u = " ";
                default:
                    if (u <= " ") switch (h) {
                        case 0:
                            r.setTagName(t.slice(e, a)), h = 6;
                            break;
                        case 1:
                            s = t.slice(e, a), h = 2;
                            break;
                        case 4:
                            var l = t.slice(e, a).replace(/&#?\w+;/g, n);
                            o.warning('attribute "' + l + '" missed quot(")!!'), r.add(s, l, e);
                        case 5:
                            h = 6
                    } else switch (h) {
                        case 2:
                            r.tagName;
                            "http://www.w3.org/1999/xhtml" === i[""] && s.match(/^(?:disabled|checked|selected)$/i) || o.warning('attribute "' + s + '" missed value!! "' + s + '" instead2!!'), r.add(s, s, e), e = a, h = 1;
                            break;
                        case 5:
                            o.warning('attribute space is required"' + s + '"!!');
                        case 6:
                            h = 1, e = a;
                            break;
                        case 3:
                            h = 4, e = a;
                            break;
                        case 7:
                            throw new Error("elements closed character '/' and '>' must be connected to")
                    }
            }
            a++
        }
    }

    function h(t, e, r) {
        for (var i = t.tagName, n = null, o = t.length; o--;) {
            var s = t[o],
                a = s.qName,
                h = s.value;
            if ((p = a.indexOf(":")) > 0) var u = s.prefix = a.slice(0, p),
                l = a.slice(p + 1),
                d = "xmlns" === u && l;
            else l = a, u = null, d = "xmlns" === a && "";
            s.localName = l, !1 !== d && (null == n && (n = {}, c(r, r = {})), r[d] = n[d] = h, s.uri = "http://www.w3.org/2000/xmlns/", e.startPrefixMapping(d, h))
        }
        for (o = t.length; o--;) {
            (u = (s = t[o]).prefix) && ("xml" === u && (s.uri = "http://www.w3.org/XML/1998/namespace"), "xmlns" !== u && (s.uri = r[u || ""]))
        }
        var p;
        (p = i.indexOf(":")) > 0 ? (u = t.prefix = i.slice(0, p), l = t.localName = i.slice(p + 1)) : (u = null, l = t.localName = i);
        var f = t.uri = r[u || ""];
        if (e.startElement(f, l, i, t), !t.closed) return t.currentNSMap = r, t.localNSMap = n, !0;
        if (e.endElement(f, l, i), n)
            for (u in n) e.endPrefixMapping(u)
    }

    function u(t, e, r, i, n) {
        if (/^(?:script|textarea)$/i.test(r)) {
            var o = t.indexOf("</" + r + ">", e),
                s = t.substring(e + 1, o);
            if (/[&<]/.test(s)) return /^script$/i.test(r) ? (n.characters(s, 0, s.length), o) : (s = s.replace(/&#?\w+;/g, i), n.characters(s, 0, s.length), o)
        }
        return e + 1
    }

    function l(t, e, r, i) {
        var n = i[r];
        return null == n && ((n = t.lastIndexOf("</" + r + ">")) < e && (n = t.lastIndexOf("</" + r)), i[r] = n), n < e
    }

    function c(t, e) {
        for (var r in t) e[r] = t[r]
    }

    function d(t, e, r, i) {
        switch (t.charAt(e + 2)) {
            case "-":
                return "-" === t.charAt(e + 3) ? (n = t.indexOf("--\x3e", e + 4)) > e ? (r.comment(t, e + 4, n - e - 4), n + 3) : (i.error("Unclosed comment"), -1) : -1;
            default:
                if ("CDATA[" == t.substr(e + 3, 6)) {
                    var n = t.indexOf("]]>", e + 9);
                    return r.startCDATA(), r.characters(t, e + 9, n - e - 9), r.endCDATA(), n + 3
                }
                var o = function (t, e) {
                        var r, i = [],
                            n = /'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;
                        n.lastIndex = e, n.exec(t);
                        for (; r = n.exec(t);)
                            if (i.push(r), r[1]) return i
                    }(t, e),
                    s = o.length;
                if (s > 1 && /!doctype/i.test(o[0][0])) {
                    var a = o[1][0],
                        h = s > 3 && /^public$/i.test(o[2][0]) && o[3][0],
                        u = s > 4 && o[4][0],
                        l = o[s - 1];
                    return r.startDTD(a, h && h.replace(/^(['"])(.*?)\1$/, "$2"), u && u.replace(/^(['"])(.*?)\1$/, "$2")), r.endDTD(), l.index + l[0].length
                }
        }
        return -1
    }

    function p(t, e, r) {
        var i = t.indexOf("?>", e);
        if (i) {
            var n = t.substring(e, i).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);
            if (n) {
                n[0].length;
                return r.processingInstruction(n[1], n[2]), i + 2
            }
            return -1
        }
        return -1
    }

    function f(t) {}
    o.prototype = {
        parse: function (t, e, r) {
            var i = this.domBuilder;
            i.startDocument(), c(e, e = {}),
                function (t, e, r, i, n) {
                    function o(t) {
                        var e = t.slice(1, -1);
                        return e in r ? r[e] : "#" === e.charAt(0) ? function (t) {
                            if (t > 65535) {
                                var e = 55296 + ((t -= 65536) >> 10),
                                    r = 56320 + (1023 & t);
                                return String.fromCharCode(e, r)
                            }
                            return String.fromCharCode(t)
                        }(parseInt(e.substr(1).replace("x", "0x"))) : (n.error("entity not found:" + t), t)
                    }

                    function c(e) {
                        if (e > E) {
                            var r = t.substring(E, e).replace(/&#?\w+;/g, o);
                            _ && m(E), i.characters(r, 0, e - E), E = e
                        }
                    }

                    function m(e, r) {
                        for (; e >= v && (r = y.exec(t));) g = r.index, v = g + r[0].length, _.lineNumber++;
                        _.columnNumber = e - g + 1
                    }
                    var g = 0,
                        v = 0,
                        y = /.*(?:\r\n?|\n)|.*$/g,
                        _ = i.locator,
                        x = [{
                            currentNSMap: e
                        }],
                        b = {},
                        E = 0;
                    for (;;) {
                        try {
                            var T = t.indexOf("<", E);
                            if (T < 0) {
                                if (!t.substr(E).match(/^\s*$/)) {
                                    var w = i.doc,
                                        S = w.createTextNode(t.substr(E));
                                    w.appendChild(S), i.currentElement = S
                                }
                                return
                            }
                            switch (T > E && c(T), t.charAt(T + 1)) {
                                case "/":
                                    var I = t.indexOf(">", T + 3),
                                        P = t.substring(T + 2, I),
                                        A = x.pop();
                                    I < 0 ? (P = t.substring(T + 2).replace(/[\s<].*/, ""), n.error("end tag name: " + P + " is not complete:" + A.tagName), I = T + 1 + P.length) : P.match(/\s</) && (P = P.replace(/[\s<].*/, ""), n.error("end tag name: " + P + " maybe not complete"), I = T + 1 + P.length);
                                    var O = A.localNSMap,
                                        D = A.tagName == P;
                                    if (D || A.tagName && A.tagName.toLowerCase() == P.toLowerCase()) {
                                        if (i.endElement(A.uri, A.localName, P), O)
                                            for (var C in O) i.endPrefixMapping(C);
                                        D || n.fatalError("end tag name: " + P + " is not match the current start tagName:" + A.tagName)
                                    } else x.push(A);
                                    I++;
                                    break;
                                case "?":
                                    _ && m(T), I = p(t, T, i);
                                    break;
                                case "!":
                                    _ && m(T), I = d(t, T, i, n);
                                    break;
                                default:
                                    _ && m(T);
                                    var M = new f,
                                        R = x[x.length - 1].currentNSMap,
                                        N = (I = a(t, T, M, R, o, n), M.length);
                                    if (!M.closed && l(t, I, M.tagName, b) && (M.closed = !0, r.nbsp || n.warning("unclosed xml attribute")), _ && N) {
                                        for (var L = s(_, {}), F = 0; F < N; F++) {
                                            var B = M[F];
                                            m(B.offset), B.locator = s(_, {})
                                        }
                                        i.locator = L, h(M, i, R) && x.push(M), i.locator = _
                                    } else h(M, i, R) && x.push(M);
                                    "http://www.w3.org/1999/xhtml" !== M.uri || M.closed ? I++ : I = u(t, I, M.tagName, o, i)
                            }
                        } catch (t) {
                            n.error("element parse error: " + t), I = -1
                        }
                        I > E ? E = I : c(Math.max(T, E) + 1)
                    }
                }(t, e, r, i, this.errorHandler), i.endDocument()
        }
    }, f.prototype = {
        setTagName: function (t) {
            if (!n.test(t)) throw new Error("invalid tagName:" + t);
            this.tagName = t
        },
        add: function (t, e, r) {
            if (!n.test(t)) throw new Error("invalid attribute:" + t);
            this[this.length++] = {
                qName: t,
                value: e,
                offset: r
            }
        },
        length: 0,
        getLocalName: function (t) {
            return this[t].localName
        },
        getLocator: function (t) {
            return this[t].locator
        },
        getQName: function (t) {
            return this[t].qName
        },
        getURI: function (t) {
            return this[t].uri
        },
        getValue: function (t) {
            return this[t].value
        }
    }, e.XMLReader = o
}]));